不,这不是阵列。
class TestGetChildren extends PHPUnit_Framework_TestCase
{
protected $objs;
protected function setUp()
{
$objs = array();
$i=0;
while ($i<20) {
$obj = (object) array (
'ID'=>$i,
'DIRID'=>0
);
if ($i>5) $obj->DIRID = $i-6;
if ($i>10) $obj->DIRID = 7;
$objs[] = $obj;
$i++;
}
$this->objs = $objs;
}
public function testGetChildren() {
$objs = $this->objs;
//var_dump($objs);
print_r(gettype($objs));
assert('array' == gettype($objs));
print_r($objs[19]->ID);
$vm = new FoldersPermissions($objs);
//$children = $vm->getChildren($vm->folders[0]);
foreach ($vm->folders as $obj) {
$children = $vm->getChildren($obj);
print_r($obj->ID."|".count($children)."\n");
// 0 is a special case, and 1 has 10 children
if (4 >= $obj->ID && 1 < $obj->ID) {
//print_r(($children));
$this->assertTrue(1 == count($children));
}
if (7 == $obj->ID){
$this->assertTrue(count($children) == 9);
}
}
}
}
另外,输出:
Debugging Output
19
所以它确实有效。 什么?
另外,显然$ objs不是数组...
编辑以澄清: 我改变了testGetChildren:
public function testGetChildren() {
$objs = $this->objs;
//var_dump($objs);
print_r(gettype($objs));
assert('array' == gettype($objs));
并将此作为回应:
NULL警告:assert():断言失败
答案 0 :(得分:1)
好的,我知道错误的原因是因为函数testGetChildren有 - 忽略大小写 - 与类同名。
所以,可能它将函数解释为构造函数,这会混淆它继承的类。
答案 1 :(得分:0)
Liquorvicar是对的,$ objs是一个数组,还有更多 - 你只是打印那个$ objs -arrays第20个对象的ID(因为数组从0到19)。所以它工作正常。如果你尝试print_r($ objs),那就是一个数组。