2011-10-22 67 views
1

我寫這個小測試類只是爲了說明我的問題在Joomla 1.7中破壞了ArrayObject類繼承?

具有更大的數據量工作時我通常創建從ArrayObject的繼承,以更好地構建我的對象,並獲得一些速度(這是歇斯底里快的一類PHP 5.3)。

在任何常規的PHP頁面中,這工作正常,但在Joomla 1.7中使用它時,對象返回修改。

這是類

// Call the class 
new TestingArrayObject(); 

class TestingArrayObject extends ArrayObject { 

    protected $Records; 

    public function __construct() { 
     $this->Records = 10; 

     for ($index = 0; $index < $this->Records; $index++) { 
      $this->append(new TestObject($index, $this->createRandomName())); 
     } 

     echo "<xmp>"; 
     print_r($this); 
     echo "</xmp>"; 
    } 

    private function createRandomName() { 
     $chars = "abcdefghijkmnopqrstuvwxyz"; 
     srand((double) microtime() * 1000000); 
     $i = 0; $pass = ''; 
     while ($i <= 7) 
      $num = rand() % 33; $tmp = substr($chars, $num, 1); $pass = $pass . $tmp; $i++; 

     return $pass; 
    } 

    public function append(TestObject $value) { 
     parent::append($value); 
    } 

} 

class TestObject { 

    public $id; 
    public $name; 

    public function __construct($id, $name) { 
     $this->id = $id; 
     $this->name = $name; 
    } 

} 

在任何普通的PHP應用程序它返回

TestingArrayObject Object 
(
    [Records] => 10 
    [storage:ArrayObject:private] => Array 
     (
      [0] => TestObject Object 
       (
        [id] => 0 
        [name] => yyhjn 
       ) 

      [1] => TestObject Object 
       (
        [id] => 1 
        [name] => ausoan 
       ) 
... 

但在的Joomla它返回

TestingArrayObject Object 
(
    [0] => TestObject Object 
     (
      [id] => 0 
      [name] => fwwuxg 
     ) 

    [1] => TestObject Object 
     (
      [id] => 1 
      [name] => vevimvbk 
     ) 
... 

所以它跳過一切,但數組對象,是非常煩人的,因爲文檔(無論如何)都不包含這種行爲。我寫了更大的框架,這取決於這種設計模式的工作,所以我不想重新設計一切! :)

任何建議從哪裏開始?

回答

1

它壞了,不得不實現ArrayObject作爲屬性而不是