Я следую учебнику по 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 …
Так как класс Super_user требует объекта Request в своем конструкторе.
Вы должны объявить метод конструктора вашего пользователя следующим образом
public function __construct(Request $request)
{
parent::__construct($request); // Pass $request object to Parent's method
$this->request = $request;
}
Других решений пока нет …