我正在尝试向我的每个类添加一个静态成员,该成员包含实例化时应使用的默认数据库连接。以下是我试图这样做的方法:
<?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,我理解它应该支持这样的东西。
答案 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;