Beispiel:Zugriff Klasse konstant Trog Eigenschaft funktioniert nicht
class LOL{
const
FOO = 1;
}
$x = new LOL;
$arr = array('x' => $x);
echo $x::FOO; // works
echo $arr['x']::FOO; // works too
Aber wenn ich meine Klasseninstanz eine Eigenschaft machen, kann ich nicht die ständigen Zugriff auf mehr:
class WWW{
protected $lol;
public function __construct($lol){
$this->lol= $lol;
}
public function doSMth(){
echo $this->lol::FOO; // fail. parse error.. wtf
}
}
$w = new WWW;
$w->doSMth();
:(
Ich weiß, ich kann einfach tun echo LOL::FOO
, aber was ist, wenn der Klassenname unbekannt ist? Von dieser Position habe ich nur Zugriff auf dieses Objekt/Eigenschaft, und ich möchte wirklich nicht, dass WWW-Klasse von ot "bewusst" sein ihre Klassen und ihre Namen. Es sollte nur mit dem angegebenen Objekt funktionieren
versuchen Sie dieses $ w = neue WWW (neues LOL); ? – Gntem
Aber wenn der Klassenname nicht bekannt ist, wie können Sie wissen, dass es "const FOO" hat? (es sei denn, alle Klassen implementieren eine Schnittstelle oder erweitern eine Klasse) –
, weil es erwartet, dass die Konstante vorhanden ist: P – Alex