avris / micrus-annotations

为Micrus框架提供的注释

v4.0.0 2018-01-28 10:08 UTC

This package is auto-updated.

Last update: 2024-08-29 04:17:39 UTC


README

这是一个将注释转换为框架配置的模块,用于Micrus框架

安装

运行

composer require avris/micrus-annotations

然后在你的App\App:registerModules中注册该模块

yield new \Avris\Micrus\Annotations\AnnotationsModule;

@M\Route

路由定义放在config/routing.yml文件中,如下所示

postList: /post/list -> Post/list
postRead: /post/{int:id}/read -> Post/read
postAdd:  /post/add -> Post/form
postEdit: /post/{int:id}/edit -> Post/form

当此模块启用时,你可以直接在控制器中放置这些信息

<?php
namespace App\Controller;

use Avris\Micrus\Controller\Controller;
use Avris\Micrus\Annotations as M;

/**
 * @M\Route("/post")
 */
class PostController extends Controller
{
    /**
     * @M\Route("/list")
     */
    public function listAction()
    {
        // ...
    }

    /**
     * @M\Route("/{int:id}/read")
     */
    public function readAction(Post $post)
    {
        // ...
    }

    /**
     * @M\Route("/add", name="postAdd")
     * @M\Route("/{int:id}/edit", name="postEdit")
     * @M\Secure(check="canEditPost")
     */
    public function formAction(Post $post = null)
    {
        // ...
    }
}

注意

  • 需要use语句
  • 当某个控制器中的所有路由共享相同的前缀时,你可以将其声明为类注释
  • 如果没有声明name,它将设置为控制器名称 + 操作名称,例如postList
  • 可以将多个路由附加到同一控制器。

@M\Secure

类似地,授权配置也可以从config/security.yml移动到注释中

public:
  - { pattern: ^/post/restricted/public$ }
restrictions:
  - { pattern: ^/post/restricted }
  - { pattern: ^/post/admin, roles: [ROLE_ADMIN] }
  - { pattern: ^/post/add$ }
  - { pattern: ^/post/(\d+)/edit$, check: canEditPost }

将变为

<?php
namespace App\Controller;

use Avris\Micrus\Controller\Controller;
use Avris\Micrus\Annotations as M;

class PostController extends Controller
{
    /**
     * @M\Secure
     */
    public function restrictedAction()
    {
        // ...
    }

    /**
     * @M\Secure(public=true)
     */
    public function restrictedPublicAction()
    {
        // ...
    }

    /**
     * @M\Secure(roles={"ROLE_ADMIN"})
     */
    public function adminAction()
    {
        // ...
    }

    /**
     * @M\Secure(check="canEditPost")
     */
    public function formAction(Post $post = null)
    {
        // ...
    }
}

扩展

实现Avris\Micrus\Annotations\Loader\AnnotationsLoaderInterface(标记annotationsLoader)。

版权