Joomla 1.7中的ArrayObject类继承被破坏了吗?

时间:2011-10-22 21:09:41

标签: php joomla1.7 spl 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 个答案:

答案 0 :(得分:1)

它已经坏了,不得不将ArrayObject作为属性来实现