Я пытаюсь передать интерфейс как параметр конструктора
в класс, который его реализует и вызывает его метод.
Использовать интерфейс как параметр __constructor()
файл: growth.php
<?php
interface Growth {
public function growPlants():array;
}
файл: forest.php
<?php
class Forest implements Growth {
private $growth;
public function __construct(Growth $growth) {
$this->growth = $growth;
}
public function otherFunction():array {
$this->growth->growPlants();
}
}
файла: deepforest.php
<?php
class DeepForest implements Growth {
public function growPlants():array {
/* Actions */
}
}
файл: test.php
<?php
include "deepforest.php";
include "forest.php";
$deeforest = new DeepForest();
$forest = new Forest($deeforest);
Uncaught Error: Call to undefined method deepForest::otherFunction()
Я просто пытался создать объект этого класса, но не имел успеха. Чем я создал другой класс, который реализует этот интерфейс, и я передал его как параметр над лесом ($ newclassobject). Означает ли это, что для создания объекта, который имеет конструктор на основе параметра интерфейса, мне нужно передать объект, который также реализован этим интерфейсом? –
№ Класс должен реализовать интерфейс, чтобы он считался экземпляром интерфейса. Можете ли вы изменить свой вопрос, чтобы включить определение другого класса, о котором вы говорили? – fubar
Пожалуйста, проверьте его снова, я понимаю, что otherFunction() должен быть в классе DeepForest(), но это странно, я не знаю. –