Symfony 路由配置简述
Symfony
路由有多种配置方式,annotation
形式类似spring
常用的注解,xml
风格像java 的一些主流框架 比如Mybatis
。yaml
则是类linux, 而至于原生的php
,与laravel,yii
等量齐观,集中配置导入,各有所好。本文以路由配置示例各种形式,欲探多种方式优劣。
Annotations
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* Matches /blog exactly / 精确匹配了/blog
*
* @Route("/blog", name="blog_list")
*/
public function listAction()
{
// ...
}
/**
* Matches /blog/* / 匹配的是/blog/*
*
* @Route("/blog/{slug}", name="blog_show")
*/
public function showAction($slug)
{
// $slug will equal the dynamic part of the URL
// e.g. at /blog/yay-routing, then $slug='yay-routing'
// $slug 必须等同于URL中的动态部分
// 即,在 /blog/yay-routing 中 $slug='yay-routing'
// ...
}
}
YAML
# app/config/routing.yml
blog_list:
path: /blog
defaults: { _controller: AppBundle:Blog:list }
blog_show:
path: /blog/{slug}
defaults: { _controller: AppBundle:Blog:show }
XML
<!-- app/config/routing.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing
http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="blog_list" path="/blog">
<default key="_controller">AppBundle:Blog:list</default>
</route>
<route id="blog_show" path="/blog/{slug}">
<default key="_controller">AppBundle:Blog:show</default>
</route>
</routes>
PHP
// app/config/routing.php
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
$collection->add('blog_list', new Route('/blog', array(
'_controller' => 'AppBundle:Blog:list',
)));
$collection->add('blog_show', new Route('/blog/{slug}', array(
'_controller' => 'AppBundle:Blog:show',
)));
return $collection;
小结
所谓配置只是个形式,一般要求能够描述数据父子关系,嵌套,配置引用等常规实现。它的最终效果,由被执行者内不同的执行器解析为统一的格式,如对象实例数组等,以便供内部数据引用。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: