1)是否可以在如下变量中存储对抽象类的引用:
abstract class A implements X {}
$A = A; //This doesn't work
2)最终我希望能够将对抽象类的引用传递给方法或函数。
class Y { public function __construct(X $X){} }
$Y = new Y($A);
能够做到这样的事情甚至会令人满意:
abstract class A { public static $staticProperty; }
class Y {
public function __construct($X){
echo $X::$staticProperty; //Doesn't work
}
}
$Y = new Y('A');
答案 0 :(得分:1)
由于无法实例化抽象类,因此仅限于使用静态属性(和常量)。从PHP 5.3开始,您可以使用变量来指定查询的类,only restriction:
从PHP 5.3.0开始,可以使用a引用该类 变量。变量的值不能是关键字(例如self,parent 和静态)。
所以你可以传递一个类名;它将作为抽象类的锚点。例如(demo):
abstract class Foo { static $bar = 5; }
abstract class Bah { static $bar = 6; }
function echoBar($classname) {
echo $classname::$bar;
}
echoBar('Foo'); // 5
echoBar('Bah'); // 6