对象数组和类的实例


Array of objects and instance of a class

这样做的最佳实践是什么:

    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没有构造函数。

    • 这使得传递arg1new 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实例是多余的,这只是一个示例。