我一直在研究 PHP 5.3.x 中的一小部分遵循 Active Record 模式的类。但是,在使用静态属性时,我遇到了一个问题。这是我一直在测试的代码:
<?php
class dbPreparedObject {
public static $insert = "";
public function __construct() {
static::$insert = "autoinsert_".get_called_class();
}
}
class gtRecord extends dbPreparedObject {}
class nRecord extends dbPreparedObject {}
$a = new gtRecord();
$b = new nRecord();
var_dump(gtRecord::$insert);
var_dump(nRecord::$insert);
输出:
string(18) "autoinsert_nRecord"
string(18) "autoinsert_nRecord"
但是,我希望第一个字符串读取autoinsert_gtRecord
.
似乎没有由子类实例化的静态属性是捆绑在一起的。有没有办法将它们分开而不public static $insert = ""
在每个子类中声明?