2016-12-21 3 views
4

Was sind die Unterschiede zwischen den folgenden Codes?

$this->idKey 
$this->$idKey 
$this->{$idKey} 

Antwort

4

Liest die idkey Eigenschaft des $this Objekt:

$this->idKey; 

liest die Variable Eigenschaft Name des $this Objekt (example in diesem Fall) so $this->example:

$idKey = 'example'; 
$this->$idKey; 

Gleiche wie oben ($this->example), jedoch mit weniger Mehrdeutigkeit (ähnlich wie das Hinzufügen von Klammern zur Steuerung des Operanden o rder und nützlich in einigen Fällen):

$idKey = 'example'; 
$this->{$idKey}; 
1

$ this-> idKey

Dies ist, wie Sie eine Objekt-Eigenschaft in PHP

Class Car{ 
//member properties 
var $color; 

    function printColor(){ 
    echo $this->color; //accessing the member property color. 
    } 
} 
zugreifen würde

$ this -> $ idKey

Dieses verwendet werden kann, wenn der Name der Eigenschaft selbst in eine Variable

$attribute ='color' 

$this->$attribute // is equivalent to $this->color 
gespeichert

$ this -> { '$ idKey'}

ist eine explizite Form oben genannten Ausdruck, aber es dient auch noch einen Zweck, Zugriff auf Eigenschaften einer Klasse, die ist Nicht a valid variable name.

$a = array('123' => '123', '123foo' => '123foo'); 
$o = (object)$a; 
echo $o->123foo; // error 

So könnte man die geschweifte Klammer Ausdruck verwenden diese

$a = array('123' => '123', '123foo' => '123foo'); 
$o = (object)$a; 
echo $o->{'123foo'}; // OK! 
1

$this->idKey ist die Eigenschaft zu lösen idKey des scoped Objekt.

$this->$idKey und $this->{$idKey} geben Sie das gleiche Ergebnis, das auf die Eigenschaft namens im Wert von $idKey zugreifen.

class ButtHaver{ 
    public idKey; 
    public buttSize; 
} 

$b = new ButtHaver(); 
$b->idKey = 'buttSize'; 
$b->buttSize = 'Large'; 
echo $b->idKey; // outputs 'buttSize' 
echo $b->$idKey; // outputs 'Large' 
echo $b->{$idKey}; // outputs 'Large' 

die ${$} Syntax ist eindeutig in bestimmten Fällen wie $$a[1] zu lösen zu klären, welche ist die Variable, die Sie wollen. ${$a[1]} für die Variable im Wert im Array und für das Array benannt in der Variablen $ a.

Sie können alles über es hier lesen: http://php.net/manual/en/language.variables.variable.php