devco/europaphp

一个轻量级、极快、多样化、可扩展且高效的PHP 5.4 视图控制器框架。

1.4.6 2017-03-14 03:26 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:46:28 UTC


README

Build Status

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\IniEuropa\Config\Adapter\JsonEuropa\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

特此授予任何人免费获得此软件及其相关文档副本(“软件”)的权利,不受任何限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是其他保证,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是因合同、侵权或其他行为而引起的,与软件或其使用或其他方式相关。