这样做的最佳实践是什么:
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的一些要点。
很难破译您所要求的内容,并且您所拥有的代码是不可恢复的。
代码错误
你的代码中有几个错误是不合逻辑的:
-
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;
}
请注意,当arg1
必须已经是一个数组时,创建ArrayIterator
实例是多余的,这只是一个示例。