Ding 是一个 PHP 框架,提供依赖注入(通过 Setter/Constructor/Method)、面向方面编程、XML、YAML、事件支持,使用 JSR 250/330 注解进行 Bean 定义。轻量级,可发布为 PHAR 文件,简单快速的 MVC 模型、syslog、非阻塞的 TCP socket 实现、定时器以及自定义错误、信号以及异常处理,PAGI 集成(用于 Asterisk 网关接口),PAMI 集成(用于 Asterisk 管理)。 <br /> <h3>Features</h3> <p> </p> <ul> <li>Scalable architecture, allowing to easily adopt new features.</li> <li>Supports XML, YAML, and annotations as bean definitions providers.</li> <li>Lightweight, easy of use, and useful.</li> <li>Loosed-couple, just use what you need and nothing more.</li> <li>Some JSR-250 and JSR-330 annotations.</li> <li>Resources through php streams.</li> <li>Setter Injection (For arrays, scalar values, php code, and references to other beans).</li> <li>Constructor Injection (For the same data types as above).</li> <li>Method Injection (So you can have dependencies in singletons that must be created on demand).</li> <li>Can define factory beans, factory classes, and factory methods to create beans.</li> <li>Managed bean lifecycle (for singletons and prototypes).</li> <li>Initialization and destruction methods called by the container.</li> <li>Aspects (as in aspect oriented programming), for xml, yaml, and annotation drivers.</li> <li>Lightweight implementation of the MVC (Model View Controller) pattern. Can be used with or without <a href="/misc/goto?guid=4958198567936129296">Twig</a>, and <a href="/misc/goto?guid=4958191033826918333">Smarty</a></li> <li>Annotations used by helpers and the container (i.e: @InitMethod, @DestroyMethod, @Controller, @ErrorHandler, etc).</li> <li>Can cache proxies and bean definitions with Zend_Cache, Memcached, Filesystem, and APC.</li> <li>Integration with PAMI and PAGI. So you can make asterisk (telephony) applications via agi and ami.</li> <li>Aware interfaces: <u>IContainerAware, IMessageSourceAware, IResourceLoaderAware, IBeanNameAware, IAspectManagerAware, ILoggerAware</u></li> <li>Extensions in the lifecycle: BeforeDefinition, AfterDefinition, BeforeCreate, AfterCreate, BeforeAssemble, AfterAssemble</li> <li>Helpers: SignalHandler, ErrorHandler, ShutdownHandler, Timer, Syslog, TCPServer, TCPClient, etc.</li> <li>Since 1.1.0: Bean inheritance through normal OOP or xml/yaml declarations.</li> <li>Since 1.1.2: Bean aliasing for xml, yaml, and annotations.<br /> <br /> 项目地址:<a href="/misc/goto?guid=4958198569669654803" target="_blank">http://marcelog.github.com/Ding/</a></li> </ul>