Aufruf der statischen Methode aus object-array variable
In PHP aufrufen Sie können eine Klasse statische Methode aus einem Objekt-Instanz (welche enthalten ist in einem array) wie folgt:
$myArray['instanceOfMyClass']::staticMethod(); //works
Aber aus irgendeinem Grund, wenn ich den $this
variable, bekomme ich einen parsing-Fehler. E. g:
$this->myArray['instanceOfMyClass']::staticMethod(); //PARSING ERROR
Nur um zu verdeutlichen, was ich meine:
class MyClass{
public static function staticMethod(){ echo "staticMethod called\n"; }
}
$myArray = array();
$myArray['instanceOfMyClass'] = new MyClass;
$myArray['instanceOfMyClass']::staticMethod(); //works
class RunCode
{
private $myArray;
public function __construct(){
$this->myArray = array();
$this->myArray['instanceOfMyClass'] = new MyClass;
$this->myArray['instanceOfMyClass']::staticMethod(); //PARSING ERROR
}
}
new RunCode;
Irgendwelche Ideen auf, wie man das umgehen kann?
- static = self:: nicht $this->
- Sorry? Ich glaube nicht, dass Sie das bekommen, was ich versuche zu tun. Ich versuche nur zum aufrufen einer statischen Methode über ein Objekt Instanz von MyClass, die einen Eintrag in der AusführenCode->myArray.
- verwenden
call_user_func(array($this->myArray['instanceOfMyClass'], 'staticMethod'));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tatsächlich verwenden "->" um den Aufruf der statischen Methode:
Dies ist ein wirklich Interessantes problem, vielleicht ist es sogar ein bug in PHP selbst.
Für eine umgehen, verwenden Sie das KISS-Prinzip.
Hoffe, das hilft!
Müssen Sie brechen die one-liner über eine temporäre variable, z.B.
Dies ist einer von vielen Fällen, in denen der PHP-compiler ist nicht schlau genug zu verstehen, verschachtelte Ausdrücke. Die PHP-Entwickler haben, verbessert dies vor kurzem, aber es gibt noch Arbeit zu tun.