PHP和类:如何只使用一个实例使用多个类?

时间:2015-03-19 13:52:45

标签: php class methods instance

我正在开发一个新的PHP类。我有一个带有一些参数的类,每个参数都是一个类的实例,分别创建为单个PHP脚本。

所以,我有:

    .- class.php
    |_ class.one.php
    |_ class.two.php
    |_ class.three.php

名为head()的第一个类将具有$ arm,$ foot和$ body作为参数:

    Class Head {
        protected $arm;
        protected $foot;
        protected $body;

        public function __construct()
        {
            $this->arm = new Arm();
            $this->foot = new Foot();
            $this->body = new Body();
        }
    }

    $myHead = new Head();
    // with this instance, I can access to ALL classes instantiated before

现在,考虑班级Arm():

    Class Arm()
    {
        public function doSome()
        {
            echo "Cheers!";
        }
    }

和类Foot():

    Class Foot()
    {
        public function doKick()
        {
            echo "GOAL!";
        }
    }

我希望从方法doKick()调用方法doSome()。

这可能吗?

1 个答案:

答案 0 :(得分:1)

您的课程彼此完全分开。他们没有任何共享。如果您将一个类从父级扩展到子级,则该子级知道父级的所有内容(但父级不知道子级中的任何更改)。

你可以破解它并使用可怕的解决方法。你应该做的是做你的设计。 Foot需要了解Arm吗?如果是这样,那么Foot必须从Arm延伸。那有意义吗?并不是的。因此,Foot告诉Arm做某事这一事实并不合理。也许Foot应该包含Head的实例。手臂也可以。然后,Foot可以告诉Head,如果有任何武器,他们应该做他们的事情。那又是一团糟。

所以,再一次,你回到设计。它确实需要自上而下。如果您无法以自上而下的方式工作,则需要研究抽象方法和/或接口。抽象方法告诉孩子们实现一个未在父实现中实现的方法。接口命令一个类来实现一组方法,这样每个人都知道该类将具有这些方法。