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 将拥有这些方法。
我正在开发新的 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 将拥有这些方法。