PHP存储对变量中抽象类的引用

时间:2013-05-31 00:50:53

标签: php

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

1 个答案:

答案 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