Felipe
Felipe

Reputation: 11887

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?

Upvotes: 6

Views: 1676

Answers (1)

Gordon
Gordon

Reputation: 317177

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.

Upvotes: 13

Related Questions