对象数组和类的实例

时间:2012-01-28 12:50:36

标签: php object

这样做的最佳做法是什么:

    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的一些主要观点。

1 个答案:

答案 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实例是多余的,这只是一个示例。

相关问题