我在与PHP类的继承和范围问题作斗争。基本上我有一个基类,其中有许多有用的方法(创建,保存,加载),其中devs当前将table_name传递给。我想创建一堆模型类,它们是空的,但扩展了&继承基类,并且可以具有调用相同名称的方法而不是基类版本。从子类扩展一个类并访问常量
im下面的代码努力从模型类的静态方法中获取table_name,任何建议?
class Model_Baseclass {
private $table_name;
public static function create($fields) {
$table_name = //self::table_name - parent::table_name - const $table_name
if ($table_name == NULL) {
throw new exception('You must specify a table.');
}
}
}
class Model_Content_Gallery extends Model_Baseclass {
public $table_name = 'Content_Gallery';
}
$old = Model_Baseclass::create(array('table_name' => 'Content_Gallery'));
$new = Model_Content_Gallery::create(array());
当你用'self ::'引用一个类属性时,你试图调用一个静态属性。你的'private $ table_name;'不是一个静态属性,它是一个实例属性。 '私人静态$ table_name;'至少会解决这个问题,尽管我不认为这就是你所犯的错误。 –