Я не могу понять, почему я получаю эту ошибку:
Аргумент 1, передаваемый в App \ src \ Manager :: manage (), должен быть экземпляром App \ src \ ManageableInterface, заданным экземпляром App \ src \ Worker.
Я закодировал интерфейс ManageableInterface не для конкретного класса, но он не работает. Вот код:
ManageableInterface.php
<?php namespace App\src\interfaces;
interface ManageableInterface
{
public function manage();
}
SleepableInterface.php
<?php namespace App\src\interfaces;
interface SleepableInterface
{
public function sleep();
}
WorkableInterface.php
<?php namespace App\src\interfaces;
interface WorkableInterface
{
public function work();
}
Worker.php
<?php namespace App\src;
use App\src\interfaces\{WorkableInterface, SleepableInterface, ManageableInterface};
class Worker implements WorkableInterface, SleepableInterface, ManageableInterface
{
public function work()
{
var_dump('Worker is working.');
}
public function sleep()
{
var_dump('Worker is sleeping.');
}
public function manage()
{
$this->work();
$this->sleep();
}
}
Manager.php
<?php namespace App\src;
class Manager
{
public function manage(ManageableInterface $worker)
{
$worker->manage();
}
}
index.php
<?php require 'vendor/autoload.php';
use App\src\{Manager, Worker};
$worker = new Worker();
$manager = new Manager();
$manager->manage($worker);
Задача ещё не решена.
Других решений пока нет …