devco / europaphp
一个轻量级、极快、多样化、可扩展且高效的PHP 5.4 视图控制器框架。
Requires
- php: >=5.4.0, <6.0.0
- ext-yaml: >=1.2
Requires (Dev)
- devco/event-emitter: 1.0.*-dev
- devco/testes: 1.1.*-dev
This package is not auto-updated.
Last update: 2024-09-28 14:46:28 UTC
README
EuropaPHP是一个专为PHP 5.4+设计的极快、灵活、轻量级的MVC框架。
为什么还需要另一个PHP框架?
EuropaPHP是对其他PHP框架不足之处的体现,它强调可扩展性、标准、视图/控制器关系以及依赖注入。它特别设计用于与您喜欢的库配合使用,并且可以无缝地与任何东西集成。
安装
安装Europa有几种方法。
源代码
从Github下载并解压到您想要的位置。
Composer
composer create-project devco/europaphp [installation path] [branch or tag]
如果您想将其作为composer包使用,只需将devco/europaphp
添加到您的composer.json
文件中。
入门指南
所有设置都在名为main
的示例模块中为您准备好了。要了解所有组件如何搭配、默认约定以及如何自定义您的应用程序,请参阅Europa\App
组件目录中的readme。
文档
要查看文档,只需进入src
目录。每个目录都有一个对应的readme
文件。要更新文档,请进行Fork、pull-request、冲洗、重复。
主要特性
有很多新功能。要深入了解,请查看每个组件的readme。
SRP和API设计
EuropaPHP 2与之前版本的主要区别在于它关注如何在PHP环境中应用单一职责原则。由于这种设计,许多类功能可以通过单个方法暴露出来。在这种情况下,为了最大限度地提高灵活性和消除不必要的复杂性,该类会使用__invoke()
来暴露该功能。这使得该类本身可以与任何is_callable()
的对象交换。通过利用PHP 5.4,适当的位置放置了类型提示,以便使用callable
,这样您就可以使用可调用的类或闭包来完成您需要的工作。
服务容器
另一个主要区别是服务容器的配置方式。服务容器通过configure()
方法接受配置。配置可以是任何callable
对象,然而,有一个可以扩展的Europa\Di\ConfigurationAbstract
类,您可以将您的配置组织到类中。使用这些类的优点是可以为这些配置定义接口,然后检查容器是否提供了该配置或配置接口。
控制器
控制器现在可以是闭包,或任何callable
对象。这样,您可以拥有非常轻量级的控制器,无需任何其他功能,或者您可以通过扩展Europa\Controller\ControllerAbstract
类来访问命名参数和过滤器。
配置
还强调在适当的地方将配置传递到类构造函数中。这同样适用于路由以及某些视图和主应用程序组件。为此,创建了一个Europa\Config\Config
类,以便更容易地使用配置。配置组件提供了一些适配器来解决您的大部分需求:Europa\Config\Adapter\Ini
、Europa\Config\Adapter\Json
和Europa\Config\Adapter\Php
。配置类允许使用点符号命名选项,以及在其他选项值中引用其他选项值。
事件管理
现在存在一个Event
组件,允许您的应用程序在其生命周期的任何点创建钩子。与其他部分一样,事件可以是任何callable
对象。
反射
反射组件现在包含了一个用于反射闭包以及普通函数的FunctionReflector
。
简化路由
路由器已完全重构,使其更容易定义应用程序的结构。由于路由器会传递一个配置,我们可以使用Config
组件来读取路由配置并将其直接传递给路由。因此,所有由Config
组件支持的配置文件类型都可用于路由器。
轻松的内容协商
View
组件现在附带了一个Negotiator
,它将根据传递的请求返回一个适合处理给定请求的特定视图类。协商者可配置到一定程度,并且是callable
,因此替换自己的协商者非常容易。
应用程序抽象
添加了App
组件,以尽可能多地消除样板代码,同时提供尽可能多的灵活性。它接受一个服务容器,用于从中获取其依赖项。此服务容器必须提供Europa\App\AppConfigurationInterface
或配置为Europa\App\AppConfiguration
。这意味着如果需要,您可以在其容器中替换依赖项以以任何方式对其进行更改。它提供了良好的默认设置,因此您可能不需要做任何事情。此外,它在其构造函数中接受配置选项以控制较小的内容,如路径和命名约定。
运行测试
从安装目录
php www/index.php test
命令行用法
要查看可用命令,请运行
php www/index.php ?
贡献
要贡献,只需分叉并提交拉取请求。每个请求都将被审查,理想情况下将包括相应的测试和可能在文档中的位置。
许可证
版权所有 (c) 2005-2011 Trey Shugart
特此授予任何人免费获得此软件及其相关文档副本(“软件”)的权利,不受任何限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是其他保证,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是因合同、侵权或其他行为而引起的,与软件或其使用或其他方式相关。