Как это?
class MyLambda( object ):
def __init__( self, body ):
self.body= body
def __call__( self, arg ):
x = arg
return eval( self.body )
def __str__( self ):
return self.body
f= MyLambda( "x == 2" )
print f(1)
print f(2)
print f
Zend Framework - это среда использования по желанию, которая позволяет вам использовать некоторые из ее компонентов. Вы даже можете использовать некоторые из этих компонентов в приложении, построенном с использованием некоторой другой структуры. Таким образом, структура использования по желанию больше похожа на библиотеку классов. *
Полнофункциональная структура означает, что использование любой ее части зависит от того, используете ли вы ее всю. Например, вы должны использовать библиотеку доступа к данным фреймворка, архитектуру MVC, скаффолдинг для генерации кода и т. Д. и все эти компоненты полагаются друг на друга, работая вместе, чтобы сформировать законченную структуру.
По вашему комментарию: Да, соединение - это один из способов взглянуть на это. Я смотрю на это как на баланс между предположениями и гибкостью. Фреймворк с полным стеком предполагает, что вы используете всю структуру вместе, и из этого предположения может произойти некоторая дополнительная магия.
ZF был разработан для минимизации допущений (то есть минимизации связи). Его компоненты делают несколько предположений о том, используете ли вы остальные компоненты, уменьшая зависимости, но повышая гибкость. Но чем меньше предположений, тем меньше магии.
Оба стиля фреймворка имеют законные преимущества.
* Одно ключевое различие между простой библиотекой классов и фреймворком состоит в том, что фреймворк предназначен для расширения. Вы' Рекомендуется расширять функциональность фреймворка с помощью объектно-ориентированных механизмов, таких как создание подклассов или полиморфизм. В то время как библиотека классов может предполагать, что вы будете использовать ее API как есть, без расширения его функциональности.