【发布时间】:2011-07-14 11:11:43
【问题描述】:
当一个类实现了ArrayAccess 接口时,它就可以作为一个数组使用了,包括 OffsetGet、OffsetSet 等等。
我没有看到的一件事是当我们想要 count() 或 sizeof() 它时的实现,在我对 PHP 的有限了解中,这相当于。
有没有类似的东西已经在标准 PHP 中实现了?
【问题讨论】:
当一个类实现了ArrayAccess 接口时,它就可以作为一个数组使用了,包括 OffsetGet、OffsetSet 等等。
我没有看到的一件事是当我们想要 count() 或 sizeof() 它时的实现,在我对 PHP 的有限了解中,这相当于。
有没有类似的东西已经在标准 PHP 中实现了?
【问题讨论】:
正确的方法是实现Countable interface
Example #1 Countable::count() example
<?php
class myCounter implements Countable {
public function count() {
static $count = 0;
return ++$count;
}
}
$counter = new myCounter;
for($i=0; $i<10; ++$i) {
echo "I have been count()ed " . count($counter) . " times\n";
}
换句话说,您自己实现count() 应该返回的逻辑。
【讨论】:
$myInstance->count()而不是count($myInstance)?我知道这很愚蠢,但我真的在寻找一种方法,让它在作为参数传递给 PHP 上的原生 count($param) 函数时返回自定义行为。