我写这个小小的测试课只是为了说明我的问题
当处理大量数据时,我通常创建一个继承自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
)
...
所以它跳过除了数组对象之外的所有东西,因为文档(无论如何都很糟糕)都非常讨厌这个行为。我正在编写依赖于这种设计模式的更大框架,所以我不想重新设计所有内容! :)
任何建议从哪里开始?
答案 0 :(得分:1)
它已经坏了,不得不将ArrayObject作为属性来实现