2016-07-13 2 views
-1

внутри шаблона PHP файлов, у меня есть сотни такого кода:

echo str_replace('x','y', $this->load1->view('something')); 

я заменил эту строку везде, с кодом:

echo blabla();

и поместил функцию в мою основную библиотеку:

function blabla(){ 
    return str_replace('x','y', $GLOBALS['this']->load1->view('something')); 
} 

, но он вызывает e rror: Fatal error...

+1

Если вы используете '$ this', вы, вероятно, уже находитесь внутри функции (называемой _method_, когда она находится в классе, что не требует использования' global'), но если вы не находитесь внутри класса вообще, '$ this' должен ** не работать **. – FirstOne

+0

где находится 'функция blabla()'? это в классе, в котором вы используете '$ this'? – cmorrissey

+3

Что вы пытаетесь сделать? Также вы должны, вероятно, прочитать это. http://www.php.net/manual/en/language.oop5.basic.php – paskl

ответ

1

В PHP $this относится к текущему объекту. Например:

class MyClass { 
    protected $attribute; 

    public function method() { 
     $this->attribute; 
    } 

    public static function staticMethod() { 
     //$this is not available here because of the static context! 
    } 
} 

$this используется внутри MyClass.

Для получения более подробной информации: http://php.net/manual/en/language.oop5.basic.php

1

Re: отредактированном вопрос, $this существует только внутри класса.

У вас есть два варианта:

function blabla($something){ 
    str_replace('x','y', $something); 
} 

blablah($this->load1->view('something')); 

Или, function blabla() { внутри класса, и падение global $this линии.