2016-07-13 8 views
-1

innerhalb einer Vorlage PHP-Dateien, ich Hunderte solcher Code haben:

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

ich diese Zeile überall ersetzt haben, mit Code:

echo blabla();

und eine Funktion in meine Core-Bibliothek platziert:

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

aber es löst e rror: Fatal error...

+1

Wenn Sie '$ this' verwenden, befinden Sie sich wahrscheinlich bereits in einer Funktion (genannt _method_, wenn es in einer Klasse ist - die nicht die Verwendung von' global' erfordert), aber wenn Sie nicht innerhalb einer Klasse sind überhaupt sollte '$ this' ** nicht ** funktionieren. – FirstOne

+0

wo befindet sich 'Funktion blabla()'? ist es in der Klasse, in der du '$ this' verwendest? – cmorrissey

+3

Was versuchst du zu tun? Auch solltest du das wahrscheinlich lesen. http://www.php.net/manual/en/language.oop5.basic.php – paskl

Antwort

1

In PHP bezieht sich $this auf das aktuelle Objekt. Zum Beispiel:

class MyClass { 
    protected $attribute; 

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

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

$this ist im Inneren des MyClass verwendet.

Weitere Details: http://php.net/manual/en/language.oop5.basic.php

1

Re: Ihre editierten Frage, existiert $this nur innerhalb der Klasse.

Sie haben zwei Möglichkeiten:

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

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

Oder, um es function blabla() { innerhalb der Klasse, und legen Sie die global $this Linie.

Verwandte Themen