Aura PHP

Aura PHP在github上的地址:http://auraphp.github.com/, 欢迎fork,欢迎在此留言讨论 :)



背景

Aura项目实际上是Solar框架的第二版,抛弃了Solar框架中的服务定位,使用依赖注入重新构思和架构新框架。至于框架名字从Solar变为Aura,主要是要避免和Apache的Solr项目混淆。



简介

在框架多如繁星的世界里,Aura项目计划为PHP 5.3+提供独立类库包。这些包既可以单独使用,也可以交互使用,还可以把它们组织成一个完整的框架。

Aura项目刚启动不久,正在紧张地开发中。欢迎大家分支Aura各类库包或Aura系统,并帮助我们为PHP 5.3+保持和维护高品质的代码。

加入邮件列表:http://groups.google.com/group/auraphp或到IRC上找我们(Freenode at #auraphp)。



开始

因为Aura项目刚启动没多久,所以还有很多不完善的地方。但我们已经有一个完整的Aura的骨架,可以用来开发Aura类库;点击这里了解更多。

如果你愿意,你可以使用已有的各类库。类库地址:

  • Autoload for a PSR-0 compliant autoloader
  • DI for dependency injection
  • Signal for signal slots / event handling
  • Cli for tools to build command-line controllers
  • Router for web routing independent of any particular framework


目标和标准

Aura项目基于Solar重构,除了Solar的目标和标准外,还有:

PHP 5.3+

Aura项目充分利用PHP 5.3+的特性。这意味着正式的名字空间、匿名函数、闭包、延迟静态绑定以及其他PHP < 5.2.x不具备的特性。特别是:

  • 使用工作区名称(”Aura”)作为顶级名字空间,包名称(”di”, “router”, “web”, “cli”等)作为二级名字空间;
  • 允许子名字空间。子名字空间并不是子包的名称,也不能独立使用。
  • 类不具备子名字空间。如:”Exception”类并不具有”Exception”或”exception”子名字空间。要使类具有子名字空间,使用子类形式(“Exception_”)或把类加入子名字空间即可。


类库第一,框架第二

译者注:让我想起了比赛时的口号,“友谊第一,比赛第二”,希望这不仅仅是口号。 :)
Aura的主要目标是提供高品质的、经良好测试过的且可以在任何代码库中使用的类库包。这意味着开发人员可以按自己需求使用Aura项目,小到一个类、包,大到整个框架。
Aura将会提供足够的类库以形成一个完整的框架。我们将会为应用程序开发提供一个系统代码源,把所有类库纳入到一个统一的框架中。


自完备

为了达到“类库第一”的目标,所有包都是自完备的,且提供独立下载。某些情况下,包的独立性可能会导致不同包之间会存在重复代码。其他情况下,可能需要数据传送对象在不同包之前传递信息,这样才能做到真正的独立,让开发者在其他代码库中也能轻松使用。
有些时候,不可能做到完全的自完备。在这些情况下,我们将会尽量最少地依赖外部包。那些需要依赖外部包的包目录下将会有一个DEPENDS文件,用于指示所有依赖的包。


编码规范

Aura项目的所有类库、包都遵循Horde/Pear/Solar/Zend 编码标准。特别是:

  • 不使用公共属性,除非通过get()/set()方法使用魔术。
  • 受保护成员不再以下划线开始。
  • 保留Solar中使用的词汇。


核心技术

  • 使用依赖注入取代服务定位(Solar::dependency()系统);主要体现:https://github.com/auraphp/aura.di
  • 高效、合理的使用闭包和匿名函数,主要用于依赖注入时的对象创建过程。
  • 多使用显式映射,而不是每次都自动搜寻目录栈。
  • 实现功能时尽可能通过依赖注入,而不是通过继承和基类。
  • 使用工厂作为通用对象创造器,而不是特殊的适配器创造器。
  • 始终支持Windows Vista/7,以便Windows用户一开始就能加入到社区。


转换优先

优先考虑从Solar类和包转换。下面是转换细节:

  • 首先是WEB应用的动态调度周期:引导程序、前端控制器、页面控制器和视图。
  • 其次是CLI及其支撑类。
  • 数据库和模型相关的工作留到后面。
  • 基于包的CLI控制器。
  • 本地化应该是包级别的,而不是类级别。
  • 让CLI和WEB控制器共享相同词汇和执行模式。
  • 在Aura中使用PHP单元测试。始终坚持写测试。目标是:每次代码提交100%的覆盖率。

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>