2012-01-28 39 views
0

的對象和實例什麼是做到這一點的最佳做法:陣列一類

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的面向對象的一些主要觀點。

+2

'$ objects'是什麼? – 2012-01-28 12:54:08

+1

另外,你可能想'new',而不是'New'。 – 2012-01-28 12:54:46

+0

'對象數組和類的實例'不符合您的persudo代碼...您是否在尋找某種註冊表設計模式? – 2012-01-28 12:56:51

回答

0

要解密您要求的內容並且您擁有的代碼不可恢復是非常困難的。


代碼錯誤

有在你的代碼的幾個錯誤是不合邏輯:

  • 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; 
} 

注意,這是多餘的創建ArrayIterator實例時arg1絕已經是一個數組,這只是一個例子。

+0

對不起,我明白我的解釋很難破譯......這不是我想要做的,我不想在我的foreach中調用該類,我希望該類自己創建該對象。 所以在foreach中我可以做echo $ sc-> some_function() 其中某些函數是SuperClass的函數。 – Flyingbeaver 2012-01-28 16:17:16