Небольшой трюк для вызова методов по цепочке в PHP

от автора

Пост, можно сказать, в догонку к этому (а именно к цепочке вызовов методов).

Вызов нескольких методов цепочкой удобен, читабелен, но есть один момент — иногда очередной вызов может отработать не совсем гладко, и есть желание вернуть, например, false, но нужно возвращать $this. Есть вариант бросать исключение, но это не такая уж исключительная ситуация. Предлагаю простое решение.

Решение лежит в том, чтобы вместо false возвращать экземпляр такого класса (совсем немного магии):

class False_class {     /**      * Getting any property      *      * @param string        $item      *      * @return False_class      */     function __get ($item) {         return $this;     }     /**      * Calling of any method      *      * @param string    $method      * @param mixed[]    $params      *      * @return False_class      */     function __call ($method, $params) {         return $this;     }     /**      * @return string      */     function __toString () {         return '0';     } } 

После вызова метода с ошибкой остальные не будут работать, что полезно, если есть зависимость между ними. После вызова цепочки можно проверить, приводится ли объект к строке со значением 0.

Класс можно расширить, добавив конструктор, который будет принимать код и описание ошибки, которые можно будет в последствии получить, например, через метод ::error() этого объекта.

Надеюсь, такой маленький трюк будет вам полезен.
Спасибо за внимание.

ссылка на оригинал статьи http://habrahabr.ru/post/174013/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *