Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将接口用作_构造函数()参数_Php_Class_Constructor_Interface_Implementation - Fatal编程技术网

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);