Передан конкретный класс вместо класса с реализованным интерфейсом php

Я не могу понять, почему я получаю эту ошибку: Аргумент 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);

0 ответов

Другие вопросы по тегам