PHP一个类使用稍后在代码中创建的另一个类的函数

时间:2014-09-10 22:36:14

标签: php class autoload

假设我有两个类(我有更多,但保持简单)...我正在使用自动加载,所以我不必担心自己包含类文件。是否可以做这样的事情,而无需重新排序代码?

$class_horses = new horses($class_rabbits); 
$class_rabbits = new rabbits();

我无法对此进行重新排序以便首先创建兔子类的原因是因为它是自动加载的,并且重新排序会使其他依赖项陷入混乱,所以我仍然处于这种情况。

基本上,我希望马类可以使用兔子中的一个功能,如果兔子类存在,但我不知道如何做到这一点。我认为自动加载可以说清楚,但我仍然有点迷失。这样的事情甚至可能吗?我觉得我错过了什么,可能会问一个愚蠢的问题。

1 个答案:

答案 0 :(得分:1)

我真的会尽力解决这个问题,因为类型提示等是不可能的,并且以下代码中的$rabbit不能被信任为rabbits实例,但是你可以使用引用来做到这一点:

<?php
class horses {
        private $rabbit;
        function __construct(&$rabbit){
                $this->rabbit = &$rabbit;
        }
        function test(){
                echo $this->rabbit->getName();
        }
}

class rabbits {
        private $name;
        function __construct($name){
                $this->name = $name;
        }
        function getName(){
                return $this->name;
        }
}



$class_horses = new horses($class_rabbits);
$class_rabbits = new rabbits('hopper');
$class_horses->test();