[英]PHP OOP: How can I access static field and object?
我想在另一个类中调用getAllPersons(),但是收到错误消息:
致命错误:无法将非静态Core \\ Model :: $ db声明为静态Models \\ Person :: $ db
class Person extends Model {
protected static $db;
protected static $table = 'person';
function __construct() {
parent::__construct ();
self::$db = Database::get ();
}
public static function getAllPersons() {
return self::$db->select ( "SELECT personID, firstname, lastname FROM " . PREFIX . self::$table );
// $db->select is not static
}
}
Another.php:
$data ['persons'] = Person::getPersons ();
错误消息告诉您所有您需要了解的内容。 在Model
类中,有一个变量$db
,它被声明为常规属性,而不是静态属性。 当您尝试声明另一个$db
变量,但将其更改为静态变量时,PHP会引发您收到的错误。
您不能扩展非静态(公共)属性或父类AS static的方法, 反之亦然 。
您必须应用与父类相同的访问修饰符 ,或者在子类中重命名属性(方法)
问题在于self::$db
(例如,在getAllPersons函数中)始终引用在Person类(未定义)上声明的$ db。 在代码中尝试以下操作(将self ::更改为static::):
function __construct() {
parent::__construct ();
static::$db = Database::get ();
}
一旦您初始化类的对象,前者将允许构造函数初始化$ db var。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.