Php 将接口用作_构造函数()参数
我正在尝试将接口作为构造函数参数传递Php 将接口用作_构造函数()参数,php,class,constructor,interface,implementation,Php,Class,Constructor,Interface,Implementation,我正在尝试将接口作为构造函数参数传递 进入实现它并调用其方法的类 文件:growth.php <?php interface Growth { public function growPlants():array; } 根据错误,传递给林构造函数的变量是数组,而不是生长的实例 是否可以发布更多代码,或者确认要传递的类实例以及它本身是否扩展了Growth?根据错误,传递给林构造函数的变量是数组,而不是Growth的实例 你能发布更多的代码吗
进入实现它并调用其方法的类
文件:growth.php
<?php
interface Growth {
public function growPlants():array;
}
根据错误,传递给林
构造函数的变量是数组,而不是生长
的实例
是否可以发布更多代码,或者确认要传递的类实例以及它本身是否扩展了Growth
?根据错误,传递给林
构造函数的变量是数组,而不是Growth
的实例
你能发布更多的代码吗,或者确认你传递的是什么类实例,以及它本身是否扩展了Growth
?我只是试图创建该类的对象,但没有成功。然后,我创建了另一个实现该接口的类,并将其作为参数通过林($newclassobject)传递。这是否意味着,为了创建一个具有基于接口参数的构造函数的对象,我也需要传递一个由该接口实现的对象?否。类需要实现该接口,才能将其视为接口的实例。你能编辑你的问题以包含你提到的另一个类的定义吗?请再次检查,我知道otherFunction()需要在DeepForest()类下,但不知何故,这很奇怪,我不知道。你原来的错误已经解决了。您在哪里调用DeepForest
实例上的otherFunction()
来获取该错误?您发布的代码中没有任何内容会导致该错误。我认为您希望创建一个继承自Forest
类的DeepForest
类。森林
由属于类植物
的对象的植物组成,您可以在深森林
中一起种植所有植物,因此您创建了一个名为GrowthPlants()
的方法,该方法用于设置实现GrowthInterface的森林类。如果是这样的话,我有一个简短的代码示例给你。我只是试图创建该类的对象,但没有成功。然后,我创建了另一个实现该接口的类,并将其作为参数通过林($newclassobject)传递。这是否意味着,为了创建一个具有基于接口参数的构造函数的对象,我也需要传递一个由该接口实现的对象?否。类需要实现该接口,才能将其视为接口的实例。你能编辑你的问题以包含你提到的另一个类的定义吗?请再次检查,我知道otherFunction()需要在DeepForest()类下,但不知何故,这很奇怪,我不知道。你原来的错误已经解决了。您在哪里调用DeepForest
实例上的otherFunction()
来获取该错误?您发布的代码中没有任何内容会导致该错误。我认为您希望创建一个继承自Forest
类的DeepForest
类。森林
由属于类植物
的对象的植物组成,您可以在深森林
中一起种植所有植物,因此您创建了一个名为GrowthPlants()
的方法,该方法用于设置实现GrowthInterface的森林类。如果是这样,我有一个简短的代码示例。
<?php
class Forest implements Growth {
private $growth;
public function __construct(Growth $growth) {
$this->growth = $growth;
}
public function otherFunction():array {
$this->growth->growPlants();
}
}
<?php
class DeepForest implements Growth {
public function growPlants():array {
/* Actions */
}
}
<?php
include "deepforest.php";
include "forest.php";
$deeforest = new DeepForest();
$forest = new Forest($deeforest);