在php中设置变量类的静态成员

时间:2013-04-21 23:13:48

标签: php class static member

我正在尝试向我的每个类添加一个静态成员,该成员包含实例化时应使用的默认数据库连接。以下是我试图这样做的方法:

<?php //other classes extend Generic
class Generic {
    public static $defaultDatabase;
    public $db;

    function __construct (&$pDatabase = null){
        if ($pDatabase!==null)
            $this->db = &$pDatabase;
        else
            $this->db = &$defaultDatabase;
    }   
}
?>


<?php
include_once("/classes/class.Database.php");
$db = new Database ("localhost", "username", "password", "TestDatabase");

$classes = array("Generic", "Member");
foreach ($classes as $class){
    include_once("/classes/class.$class.php");
    $class::defaultDatabase = &$db;//throws error here, unexpected "="
}

?>

我做错了什么?有没有更好的方法,或者我必须单独为每个类设置defaultDatabase?我正在使用php 5.3,我理解它应该支持这样的东西。

2 个答案:

答案 0 :(得分:1)

使用self::$propertyName访问static properties

function __construct (&$pDatabase = null){
    if ($pDatabase!==null)
        $this->db = &$pDatabase;
    else
        $this->db = self::$defaultDatabase;
} 

另请注意,如果&$var是对象,则使用引用运算符$var是没有意义的。这是因为PHP中的所有对象实际上都是引用。

答案 1 :(得分:1)

在此代码中

 $class::defaultDatabase = &$db

您应该在defaultDatabase之前添加$,因为通过

访问静态属性

ClassName::$staticProperty

与通过

访问的其他人不同

$class->property;