这样做的最佳做法是什么:
class AwesomeClass {
// Code
public function test()
{
foreach($objects->values as $v)
{
New SuperClass($v);
}
return $objects;
}
}
class SuperClass {
public function __construct($arg2)
{
return trim($arg2);
}
}
$rule_the_world = New AwesomeClass($arg1);
$king = $rule_the_world->test();
以前的代码显然不起作用,我想我错过了PHP OO的一些主要观点。
答案 0 :(得分:0)
要破译你所要求的内容非常困难,而你所拥有的代码是无法恢复的。
您的代码中存在多个不合逻辑的错误:
AwesomeClass
没有构造函数。
arg1
传递给new AwesomeClass
毫无意义arg1
永远不会初始化在AwesomeClass::test()
中,objects
永远不会被初始化,也没有成员value
。
New SuperClass
(根据标准,应为new
)不执行任何操作。
__construct()
无法返回值。我认为你想要的是这样的:
class AwesomeClass implements IteratorAggregate {
private $arg1;
public function __construct(array $arg1) {
$this->arg1 = $arg1;
}
public function getIterator() {
return new ArrayIterator($this->arg1);
}
}
class SuperClass {
private $arg2;
public function __construct($arg2) {
$this->arg2 = $arg2;
}
public function __toString() {
return "$this->arg2\n";
}
}
$rule_the_world = new AwesomeClass(array('one', 'two', 'three'));
foreach ($rule_the_world as $sc) {
$sc = new SuperClass($sc);
echo $sc;
}
请注意,当ArrayIterator
必须已经是数组时,创建arg1
实例是多余的,这只是一个示例。