Возможный дубликат:
Считать элементы для объектов, реализующих ArrayAccess, используя count()?
В PHP 5 вы можете использовать магические методы, перегружать некоторые классы и т.д. В С++ вы можете реализовать функции, которые существуют до тех пор, пока разные типы аргументов. Есть ли способ сделать это в PHP?
Пример того, что я хотел бы сделать, это следующее:
class a {
function a() {
$this->list = array("1", "2");
}
}
$blah = new a();
count($blah);
Я хотел бы, чтобы blah возвращался 2. IE подсчитывал значения определенного массива в классе. Итак, в С++ способ, которым я бы это сделал, может выглядеть так:
int count(a varName) { return count(varName->list); }
В принципе, я пытаюсь упростить вызовы данных для большого приложения, поэтому я могу это сделать:
count($object);
а не
count($object->list);
Список будет потенциально списком объектов, поэтому в зависимости от того, как он использовался, это может быть очень неприятное утверждение, если кто-то должен сделать это по-настоящему:
count($object->list[0]->list[0]->list);
Итак, могу ли я сделать что-то похожее на это:
function count(a $object) {
count($object->list);
}
Я знаю, что PHP count принимает смешанный var, поэтому я не знаю, могу ли я переопределить отдельный тип.