spiffy / spiffy-routes
ZF2 模块,它直接在控制器中提供路由注解。
Requires
- php: >=5.3.3
- doctrine/common: 2.*
- zendframework/zend-cache: 2.*
- zendframework/zend-code: 2.*
- zendframework/zend-console: 2.*
- zendframework/zend-mvc: 2.*
- zendframework/zend-serializer: 2.*
- zendframework/zend-version: 2.*
Requires (Dev)
- phpunit/phpunit: 3.*
- satooshi/php-coveralls: dev-master
- spiffy/spiffy-test: dev-master
- zendframework/zend-test: 2.*
This package is not auto-updated.
Last update: 2019-02-20 17:28:56 UTC
README
SpiffyRoutes 是一个模块,旨在通过在控制器/操作本身上提供注解来加快设置路由的速度。SpiffyRoutes 包含了缓存和 CLI 工具,可以在需要时预热/清除缓存。
项目状态
安装
SpiffyRoutes 的安装使用 composer。有关 composer 文档,请参阅 getcomposer.org。
php composer.phar require spiffy/spiffy-routes:dev-master
然后,将 SpiffyRoutes
添加到您的 config/application.config.php
不使用 composer 的安装不受官方支持,并且需要您安装并自动加载 composer.json
中指定的依赖。
支持的注解
以下是当前支持的注解列表。随着更多注解的支持,此列表将得到更新。为了使用注解,您必须先 导入它们。这样做的方法是在代码顶部放置以下内容:
<?php use SpiffyRoutes\Annotation as Route;
这将允许您使用 @Route
在文档块中使用 SpiffyRoute 的注解。
根
根注解用于 控制器 级别,并指定应用于控制器内部所有操作的所有路由的前缀。
<?php use SpiffyRoutes\Annotation as Route; /** * @Route\Root("/my") */ class MyController { /** * @Route\Literal("/home") */ public function indexAction() { // ... I resolve to /my/home } }
文本
文本注解映射到文本路由类型。
<?php use SpiffyRoutes\Annotation as Route; class MyController { /** * @Route\Literal("/home", name="index") */ public function indexAction() { // ... I resolve to "/home", with name "index" } }
正则表达式
文本注解映射到文本路由类型。
<?php use SpiffyRoutes\Annotation as Route; class MyController { /** * @Route\Regex("/regex/(?<id>\d+)", spec="/regex/%id%") */ public function indexAction() { // ... I resolve to "/regex/<someid>" } }
段
文本注解映射到文本路由类型。
<?php use SpiffyRoutes\Annotation as Route; class MyController { /** * @Route\Segment("/segment[/:id]", constraints={"id"="\d+"}) */ public function indexAction() { // ... I resolve to "/segment/<someid>", or /segment } }
缓存
由于解析注解所需的反射量很大,因此缓存非常重要。实际上,缓存是 必须 的。但是,您可以在开发期间将缓存适配器设置为 Zend\Cache\Storage\Adapter\Memory
,如果希望在每个请求上重建路由器配置。
默认情况下,使用 SpiffyRoutes\Cache
服务启用缓存,这是一个 Zend\Cache\Storage\AdapterFilesystem
,其缓存路径设置为 data/spiffy-routes
。
多个路由
SpiffyRoutes 支持每个索引多个路由。要使用它们,只需向您的操作添加更多注解即可。
<?php use SpiffyRoutes\Annotation as Route; class MyController { /** * @Route\Regex("/regex/(?<id>\d+)", spec="/regex/%id%") * @Route\Segment("/segment[/:id]", constraints={"id"="\d+"}) */ public function indexAction() { // ... I resolve to "/segment/<someid>", or /segment, or /regex/<someid> } }
CLI 工具
提供了一个 CLI 工具来构建和清除缓存。在控制台运行您的 public/index.php
以查看相关信息。
自动路由名称
建议为所有路由指定名称,例如:@Route\Literal("/", name="home")
。未指定名称将导致系统根据控制器和操作名的规范版本自动生成路由名称。
例如,如果您已将控制器注册为My\Controller
到ControllerManager中,并且正在添加对indexAction
的路由,则自动生成的路由名称将是my_controller_index
。