как создать класс php, который может быть преобразован в логическое значение (правдиво или ложно)

Я создаю класс коллекции и хотел бы, чтобы он заменял массивы, которые я использую в настоящее время.

Как создать класс, который может быть преобразован в логическое значение, Итак, класс может быть правдивым или ложным?

Простой тест показывает, что объект пустого класса правдив:

class boolClass {}
$obj = new boolClass();
var_dump( (bool)$obj);
//prints 
//bool(true)

Но мне нужно решить, является ли мой класс правдивым или ложным. Есть ли способ указать движку PHP, как преобразовать мой класс в логическое? Как я мог бы сделать с __toString ()?

Справочная информация:

Допустим, я пишу такой класс (это только пример):

class MyCollection implements ArrayAccess, Iterator {
    //...
}

В настоящее время я активно использую следующие шаблоны:

$var = array();

if (empty($var)) {
   //array is empty, (or there is no array at all)
   // I do something here
}

Я бы хотел, чтобы выглядят так:

$var = new MyCollection(array());

, а остальные оставьте без изменений. Но $ var, содержащий MyCollection, всегда правдив, поэтому мне потребуются все условия:

if ($var->isEmpty()) {
    //...
}

Но это неприемлемо, так как в моей кодовой базе много мегабайт.

Есть ли здесь решение?

9
задан SWilk 24 May 2011 в 16:06
поделиться