Почему я не могу установить свойства класса в конструкторе его родителя? (РНР)

Я следую учебнику по php без фреймворка (соответствующая глава здесь: https://github.com/PatrickLouys/no-framework-tutorial/blob/master/07-inversion-of-control.md). И, расширяя его, как сокращенный пример, все отлично работает, когда я создаю экземпляры различных свойств класса:

use Http\Request;

class User extends Super_user
{
private $request;

public function __construct(Request $request)
{
parent::__construct();
$this->request = $request;
}
}

Однако, когда я пытаюсь установить запрос в родительском объекте, я, кажется, получаю сообщение об ошибке: Аргумент 1, передаваемый в Namespace \ Controllers \ Super_user :: __ construct (), должен быть экземпляром Namespace \ Template \ Request, ни один из которых не задан, вызван в .. ,

class User extends Super_user
{

public function __construct()
{
parent::__construct();
}
}

use Http\Request;

class Super_user
{
public function __construct()
{
$this->request = $request;
}

}

Любая помощь будет с благодарностью от кого-то, кто является довольно новым для PHP …

0

Решение

Так как класс Super_user требует объекта Request в своем конструкторе.
Вы должны объявить метод конструктора вашего пользователя следующим образом

public function __construct(Request $request)
{
parent::__construct($request);  // Pass $request object to Parent's method
$this->request = $request;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]