Обычно я вижу магический метод __invoke () {...} как отличную возможность абстрагироваться от использования основных функций объекта класса или для интуитивной настройки объекта (подготовка объект перед использованием его методов).
Случай 1 - Например, допустим, что я использую какой-то сторонний объект, который реализует магический метод __invoke, предоставляя таким образом легкий доступ к основным функциям экземпляра объекта. Чтобы использовать его, мне нужно только знать, какие параметры ожидает метод __invoke и каков будет конечный результат этой функции (замыкание). Таким образом, я могу использовать основные функциональные возможности объекта класса без особых усилий, чтобы расширить возможности объекта (обратите внимание, что в этом примере нам не нужно знать или использовать любое имя метода).
Абстрагируясь от реального кода ...
вместо
$obj->someFunctionNameInitTheMainFunctionality($arg1, $arg2);
мы теперь используем:
$obj($arg1, $arg2);
Теперь мы можем также передать объект другому функции, которые ожидают, что ее параметры будут вызываться так же, как и в обычной функции:
вместо
someFunctionThatExpectOneCallableArgument($someData, [get_class($obj), 'someFunctionNameInitTheMainFunctionality']);
мы теперь используем:
someFunctionThatExpectOneCallableArgument($someData, $obj);
__ invoke также предоставляет хороший ярлык использования, так почему бы не использовать его?
мы используем версию сообщества nexus (@see http://www.sonatype.com/products/nexus ) для кэширования внешних артефактов и публикации внутренних выпусков и снимков.
мы оценили некоторые инструменты для непрерывной интеграции (@see http://continuum.apache.org , @see https://hudson.dev.java.net ) и решил использовать Hudson из-за его простоты.
Sonatype будет размещать артефакты вашего проекта, если это открытый исходный код. Подробнее см. здесь .
Вы можете получить хостинг Bamboo у одного из их партнеров