【发布时间】:2010-05-15 09:28:33
【问题描述】:
我正在制作一个模板系统,我在其中使用 foreach 循环实例化每个标签。问题是一些标签相互依赖,所以我想知道如何绕过循环中的排序。
这是一个例子:
Class A {
public $width;
__construct() {
$this->width = $B->width; // Undefined! Or atleast not set yet..
}
}
Class B {
public $width;
__construct() {
$this->width = "500px";
}
__tostring() {
return "Hello World!";
}
}
Template.php
$tags = array("A", "B");
foreach ($tags as $tag) {
$TagObj[$tag] = new $tag();
}
echo $TagObj['A']->width; // Nadamundo!
编辑:好吧,澄清一下.. 我的主要问题是 A 类依赖于 B 类,但 A 类在 B 类之前实例化,因此尚未定义宽度在 B 类中。我正在寻找一种好方法来确保为每个人加载所有类,从而允许存在相互依赖关系。为了以后,请不要考虑任何语法错误..我只是当场编造这个例子。还假设在 B 类实例化后,我可以从 A 类访问 B 类。
我知道这在其他地方有应用,我确信这已经解决了,如果有人能启发我或指出我正确的方向,那就太好了!
谢谢! 马特·穆勒
【问题讨论】:
-
我不明白。您希望按照什么标准进行实际排序?
-
查看编辑了解更多详情
-
您可以将对象实例化顺序添加到您的标签数组吗?像 $tags = array("A" => 1, "B" => 2);并在foreach之前按顺序排序?还是在您的系统中不可能?