2016-09-26 7 views
-3

Ich habe ein paar Fragen: so, ich habe eine Klasse A haben wie folgt:Logik einer Variable einer Klasse von einer anderen Klasse aufrufen

class A { 
protected $ _blah = 'blah'; 

public __construct { 
$this-> setPath ('test'); 
new B; 
} 

public setPath ($ path) { 
$ This -> _ blah = $ path; 
} 
} 

Ich habe eine Klasse B wie folgt:

class B extends A { 
`echo $ this -> _ blah`; 
} 

nah, warum ist die Ausgabe: ‚blah‘ und nicht ‚Test‘ in Klasse B. aber ich habe die Variable in der Klasse A auf ‚Test‘ vor meiner Instanz der Klasse B.

+0

kein Leerzeichen nach dem '$' Legen Sie. Es funktioniert, aber es ist nicht üblich Stil und macht Ihren Code schwieriger für alle anderen zu lesen. – Barmar

+0

Die Leerzeichen um '->' sind ebenfalls nicht üblich. – Barmar

+0

Gibt es einen Grund, warum Sie die echo-Anweisung zurückverfolgen? – Barmar

Antwort

0

aus dem veränderten Code du po Das Problem liegt wahrscheinlich daran, dass Sie $This statt $this anrufen.

Als Referenz sehen Sie sich an, wie PHP object inheritance behandelt. Da bei Variablen die Groß- und Kleinschreibung beachtet wird, ändern Sie die Eigenschaft Ihrer Klasse im veröffentlichten Code nicht.

Ein besseres Beispiel wäre die folgende:

class A 
{ 
    public $property = 'foo'; 
} 

class B extends A 
{ 
    public function __construct() 
    { 
     $this->property = 'baz'; 
    } 
} 

// 'foo'; 
echo A::$property; 

$b = new B; 

// 'baz' 
echo $b->property; 
Verwandte Themen