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');
由于不能实例化抽象类,因此只能使用静态属性(和常量)。从PHP 5.3开始,您可以使用变量来指定查询的类,只有以下限制:
从PHP 5.3.0开始,可以使用变量。变量的值不能是关键字(例如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