#php #oop #methods #properties
#php #ооп #методы #свойства
Вопрос:
class UserInfo extends Database{
private $privileges=
$this
->connect()
->select("users", "DISTINCT privileges", "username= 'someuser'")
->getResult('privileges');
}
Не похоже, что я смогу определить это свойство $privileges
на основе метода, основанного на родительском классе Database
.
Стоит отметить, что одна и та же функция работает великолепно, когда я использую ту же функцию в другом скрипте и определяю свойства динамически. Каждый класс создается объектом, он работает (очевидно, с соответствующими установщиками и получателями).
$db = new Database;
$user = new UserInfo;
$user-> privileges=
$db
->connect()
->select("users", "DISTINCT privileges", "username= '".$user->name."'")
-> getResult('privileges');
Комментарии:
1. Эта модель наследования просто выглядит неправильно.
2. Я не чувствую, что этот комментарий полезен. Хотите уточнить?
Ответ №1:
Вы не можете поместить выражение при определении значения свойства внутри класса. Для этого используйте конструктор:
<?php
class UserInfo extends Database
{
// ...
public function __construct()
{
// initialize the 'privileges' property
}
}
?>
Ответ №2:
Новый экземпляр ( this
) не готов к инициализации закрытых элементов. Вы должны поместить этот код в конструктор.