Определение свойства на основе родительского метода в PHP

#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 ) не готов к инициализации закрытых элементов. Вы должны поместить этот код в конструктор.