0

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');
4

1 回答 1

1

由于您无法实例化抽象类,因此您只能使用静态属性(和常量)。从 PHP 5.3 开始,您可以使用变量来指定查询的类,只有限制

从 PHP 5.3.0 开始,可以使用变量来引用类。变量的值不能是关键字(例如 self、parent 和 static)。

所以你可以传递一个类名;它将作为抽象类的锚。例如(演示):

abstract class Foo { static $bar = 5; }
abstract class Bah { static $bar = 6; }

function echoBar($classname) {
   echo $classname::$bar;
}

echoBar('Foo'); // 5
echoBar('Bah'); // 6
于 2013-05-31T01:16:17.733 回答