Assetic Bundles 缓存 Composer 配置 控制台 控制器 调试 部署 Doctrine 电子邮件 事件分发器 表达式 表单 前端 日志 分析器 请求 路由 安全 序列化 服务容器 会话 PSR 7 Symfony 版本 模板 测试 升级 验证 Web 服务器 Web 服务 工作流

发布于 2015-12-06 07:27:29 | 166 次阅读 | 评论: 0 | 来源: 网络整理

Compiler Passes 让您有机会去操作已经注册到其它服务容器中的服务定义。您可以阅读组件部分的文章“[编制容器]( http://symfony.com/doc/current/components/dependency_injection/compilation.html)” 来了解怎么去创建它们。如果您想从一个 bundle 类中注册编译器,那么您需要把它添加到 bundle 类定义中的构造方法中:

// src/Acme/MailerBundle/AcmeMailerBundle.php
namespace Acme\MailerBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;

use Acme\MailerBundle\DependencyInjection\Compiler\CustomCompilerPass;

class AcmeMailerBundle extends Bundle
{
    public function build(ContainerBuilder $container)
    {
        parent::build($container);

        $container->addCompilerPass(new CustomCompilerPass());
    }
}

最常见的关于 Compiler Passes 的用例是标记服务 (想要了解更多关于标签的内容请参阅组件部分的内容"标记服务的运用") 。如果您要使用 bundle 类中的自定义标签名,随后使用标记名来包含 bundle 的名称(使用小写字母,下划线作为分隔符),然后加一个点,最后再跟着真正的名称。比如:如果您希望在您的 AcmeMailerBundle 类中引入某种形式的"传输"标记,可以称之为 acme_mailer.transport

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务