Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Count elements for objects implementing ArrayAccess using count()?

When a class implements the ArrayAccess interface, it becomes ready to function as an array, complete with OffsetGet, OffsetSet and so on.

One thing I didn't see was an implementation for when we want to count() or sizeof() it, which, in my limited knowledge of PHP, amounts to the same.

Is there anything like it already implemented in standard PHP?

like image 447
Felipe Avatar asked Mar 13 '11 13:03

Felipe


1 Answers

The correct way would be to implement the 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";
}

In other words, you implement the logic what count() should return yourself.

like image 170
Gordon Avatar answered Oct 14 '22 06:10

Gordon