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

PHP and Classes: how can I use multiple Classes with only one instance?

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

所以,我有:

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

第一个 class,名为 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

现在,考虑 class Arm():

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

和 class 脚():

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

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

这可能吗?

您有 class 个完全独立的元素。他们没有任何共享。如果将 class 从父对象扩展到子对象,则子对象知道父对象的所有信息(但父对象不知道子对象发生的任何变化)。

您可以破解它并使用糟糕的解决方法。你应该做的是在你的设计上工作。 Foot 需要了解 Arm 吗?如果是,则 Foot 必须从 Arm 延伸。那有意义吗?并不真地。因此,Foot 告诉 Arm 做某事这一事实是没有意义的。或许 Foot 应该包含 Head 的一个实例。手臂还可以。然后,Foot 可以告诉 Head,如果有任何手臂,他们应该做他们的事情。这又是一团糟。

因此,您再次回到设计。它确实需要自上而下。当您不能以自上而下的方式工作时,您需要研究抽象方法 and/or 接口。抽象方法告诉子级实现父级中未实现的方法。接口命令 class 实现一组方法,因此每个人都知道 class 将拥有这些方法。