内置Symfonyob娱乐下载服务标签
编辑该页面- assets.package
- auto_alias
- console.command
- container.hot_path
- container.no_preload
- container.preload
- controller.argument_value_resolver
- data_collector
- doctrine.event_listener
- doctrine.event_subscriber
- form.type
- form.type_extension
- form.type_guesser
- kernel.cache_clearer
- kernel.cache_warmer
- kernel.event_listener
- kernel.event_subscriber
- kernel.fragment_renderer
- kernel.locale_aware
- kernel.reset
- mime.mime_type_guesser
- monolog.logger
- monolog.processor
- routing.loader
- routing.expression_language_provider
- security.expression_language_provider
- security.remember_me_aware
- security.voter
- serializer.encoder
- serializer.normalizer
- translation.loader
- translation.extractor
- translation.dumper
- twig.extension
- twig.loader
- twig.runtime
- validator.constraint_validator
- validator.initializer
服务标签使用的机制吗DependencyInjection组件国旗的服务,需要特殊处理,如控制台命令或树枝扩展。
本文展示了最常见的Symfony组件所提供的标签,但在您的应用程序可能有多个标记提供的第三方包可用。ob娱乐下载
运行这个命令显示标记服务在您的应用程序:
1
美元php bin /控制台调试:容器——标签
搜索一个特定的标签,重新运行这个命令搜索词:
1
美元php bin /控制台调试:容器——标签= form.type
这是另一种方式来声明一个资产包。包的名称设置在这个顺序:
- 首先,
包
标签的属性; - 然后,由静态方法返回的值
getDefaultPackageName ()
如果定义; - 最后,服务名称。
- YAML
- XML
- PHP
1 2 3 4
服务:应用\ \ AvatarPackage资产:标签:- - - - - -{名称:assets.package,包:阿凡达}
现在你可以使用阿凡达
包在你的模板:
1
<imgsrc=”{{资产(“…”、“阿凡达”)}}”>
而不是处理这三个服务,您的应用程序需要一个通用的app.lock
服务,这些服务将别名之一,这取决于一些配置。多亏了auto_alias
选项中,可以自动创建别名基于一个配置参数的值。
考虑到一个配置参数database_type
的存在。然后,通用app.lock
服务可以定义如下:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10
服务:app.mysql_lock:#……app.postgresql_lock:#……app.sqlite_lock:#……app.lock:标签:- - - - - -{名称:auto_alias,格式:“应用,% database_type % _lock”}
的格式
选项定义表达式用于构建服务的名称别名。这个表达式可以使用任何容器参数(像往常一样,包装他们的名字%
字符)。
请注意
当使用auto_alias
标签,这不是强制定义别名私人服务。然而,这样做(就像在上面的例子中)是有道理的大多数时候,防止直接访问这些服务,而不是使用通用服务别名。
5.1
在Syob娱乐下载mfony的版本5.1之前,您需要手动添加ob娱乐下载
编译器传递给这个特性工作的容器。现在这个编译器通过自动添加。
这个标签添加到服务和它的类使用时不会加载PHP类预加载:
- YAML
- XML
- PHP
1 2 3
服务:App \ SomeNamespace \ SomeService:标签:(“container.no_preload”)
如果你添加一些服务标记container.no_preload
另一个服务作为参数,container.no_preload
标签是应用自动服务。
当使用PHP类预加载,这个标签允许您定义PHP类应该预加载。这可以提高性能通过的一些类使用的服务总是可用的所有请求(在服务器重新启动之前):
- YAML
- XML
- PHP
1 2 3 4 5 6
服务:App \ SomeNamespace \ SomeService:标签:- - - - - -{名称:“container.preload”,类:“App \ SomeClass”}- - - - - -{名称:“container.preload”,类:“应用\ \ OtherClass一些”}#……
如何创建一个定制的数据收集器篇文章。
主义事件篇文章。
主义事件篇文章。
如何创建一个自定义表单字段类型篇文章。
如何创建一个表单类型扩展篇文章。
形式猜测的过程。默认情况下,猜测是通过“猜测”形式的基础上,验证元数据和教义的元数据(如果您正在使用原则)或推动元数据(如果您正在使用推动)。
另请参阅
有关如何创建自己的类型的信息推测者,明白了创建一个自定义类型猜测者。
另请参阅
有关如何创建自己的类型的信息推测者,明白了创建一个自定义类型猜测者。
缓存:清晰命令。如果你的包缓存文件,你应该添加一个自定义缓存清晰清除缓存清理过程中这些文件。
为了注册您的自定义缓存清晰,首先您必须创建一个服务类:
1 2 3 4 5 6 7 8 9 10 11 12
/ / src /缓存/ MyClearer.php名称空间应用程序\缓存;使用ob娱乐下载\组件\HttpKernel\CacheClearer\CacheClearerInterface;类MyClearer实现了CacheClearerInterface{公共函数清晰的(字符串美元cacheDirectory){/ /清理缓存}}
如果你使用默认的服务。yaml的配置,你的服务将会自动标记kernel.cache_clearer
。但是,你也可以手动注册:
- YAML
- XML
- PHP
1 2 3
服务:应用程序缓存\ \ MyClearer:标签:(kernel.cache_clearer)
1 2 3 4 5 6 7 8 9 10 11 12
/ / src /缓存/ MyClearer.php名称空间应用程序\缓存;使用ob娱乐下载\组件\HttpKernel\CacheClearer\CacheClearerInterface;类MyClearer实现了CacheClearerInterface{公共函数清晰的(字符串美元cacheDirectory){/ /清理缓存}}
kernel.cache_clearer
。但是,你也可以手动注册:- YAML
- XML
- PHP
1 2 3
服务:应用程序缓存\ \ MyClearer:标签:(kernel.cache_clearer)
缓存:热身或缓存:清晰
命令(除非你通过——no-warmup
来缓存:清晰
)。它也运行处理请求时,如果不是通过一个命令。
目的是初始化任何所需缓存的应用程序,防止第一个用户任何重要的“缓存命中”,缓存动态生成。
注册自己的缓存温暖,首先创建一个服务实现CacheWarmerInterface接口:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29
/ / src /缓存/ MyCustomWarmer.php名称空间应用程序\缓存;使用应用程序\喷火\酒吧;使用ob娱乐下载\组件\HttpKernel\CacheWarmer\CacheWarmerInterface;类MyCustomWarmer实现了CacheWarmerInterface{公共函数热身(美元cacheDirectory){/ /……做一些操作“温暖”你的缓存吗美元filesAndClassesToPreload= [];美元filesAndClassesToPreload[]=酒吧::类;foreach(scandir (美元someCacheDir)作为美元文件){如果(! is_dir (美元文件=美元someCacheDir。' / '。美元文件)){美元filesAndClassesToPreload[]=美元文件;}}返回美元filesAndClassesToPreload;}公共函数isOptional(){返回真正的;}}
的热身()
方法必须返回一个数组与预加载的文件和类。文件必须绝对路径和类都必须完全限定类名。唯一的限制是,文件必须保存在缓存目录。如果你不需要预加载什么,返回一个空数组
5.1
不返回的数组热身()
方法和预加载的文件是Symfony 5.1以来弃用。ob娱乐下载
的isOptional ()
方法应该返回true,如果可以使用应用程序没有调用这个缓存温暖。在Syob娱乐下载mfony中,可选的温暖总是默认执行(你可以改变这一用——no-optional-warmers
选择在执行命令)。
如果你使用默认的服务。yaml的配置,你的服务将会自动标记kernel.cache_warmer
。但是,你也可以手动注册:
- YAML
- XML
- PHP
1 2 3 4
服务:应用程序缓存\ \ MyCustomWarmer:标签:- - - - - -{名称:kernel.cache_warmer,优先级:0}
请注意
的优先级
是可选的,它的值是一个积极或消极的整数,默认为0
。数越高,执行的长手套的早些时候。
谨慎
如果您的缓存温暖失败的执行,因为任何例外,Symfony不会再次尝试执行它在接下来的请求。ob娱乐下载因此,您的应用程序和/或包时应准备的内容缓存生成的温暖并不可用。
除了你自己的缓存的长手套,Symfony组件和第三方包定义缓存的长手套也达到自ob娱乐下载己的目的。你可以列出所有使用下面的命令:
1
美元php bin /控制台调试:容器——标签= kernel.cache_warmer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29
/ / src /缓存/ MyCustomWarmer.php名称空间应用程序\缓存;使用应用程序\喷火\酒吧;使用ob娱乐下载\组件\HttpKernel\CacheWarmer\CacheWarmerInterface;类MyCustomWarmer实现了CacheWarmerInterface{公共函数热身(美元cacheDirectory){/ /……做一些操作“温暖”你的缓存吗美元filesAndClassesToPreload= [];美元filesAndClassesToPreload[]=酒吧::类;foreach(scandir (美元someCacheDir)作为美元文件){如果(! is_dir (美元文件=美元someCacheDir。' / '。美元文件)){美元filesAndClassesToPreload[]=美元文件;}}返回美元filesAndClassesToPreload;}公共函数isOptional(){返回真正的;}}
热身()
方法必须返回一个数组与预加载的文件和类。文件必须绝对路径和类都必须完全限定类名。唯一的限制是,文件必须保存在缓存目录。如果你不需要预加载什么,返回一个空数组5.1
不返回的数组热身()
方法和预加载的文件是Symfony 5.1以来弃用。ob娱乐下载
isOptional ()
方法应该返回true,如果可以使用应用程序没有调用这个缓存温暖。在Syob娱乐下载mfony中,可选的温暖总是默认执行(你可以改变这一用——no-optional-warmers
选择在执行命令)。kernel.cache_warmer
。但是,你也可以手动注册:- YAML
- XML
- PHP
1 2 3 4
服务:应用程序缓存\ \ MyCustomWarmer:标签:- - - - - -{名称:kernel.cache_warmer,优先级:0}
请注意
的优先级
是可选的,它的值是一个积极或消极的整数,默认为0
。数越高,执行的长手套的早些时候。
谨慎
如果您的缓存温暖失败的执行,因为任何例外,Symfony不会再次尝试执行它在接下来的请求。ob娱乐下载因此,您的应用程序和/或包时应准备的内容缓存生成的温暖并不可用。
1
美元php bin /控制台调试:容器——标签= kernel.cache_warmer
EsiFragmentRenderer——创建一个类,它实现了FragmentRendererInterface,注册一个服务,然后标记它kernel.fragment_renderer
。
语言环境
设置和检索语言环境可以通过配置或使用容器参数,参数或当前请求听众,路线。
多亏了翻译
通过服务合同,可以设置语言环境。
注册自己的地区意识到服务,首先创建一个服务实现LocaleAwareInterface接口:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /地区/ MyCustomLocaleHandler.php名称空间应用程序\语言环境;使用ob娱乐下载\合同\翻译\LocaleAwareInterface;类MyCustomLocaleHandler实现了LocaleAwareInterface{公共函数setLocale(美元语言环境){美元这- >语言环境=美元语言环境;}公共函数getLocale(){返回美元这- >语言环境;}}
如果你使用默认的服务。yaml的配置,你的服务将会自动标记kernel.locale_aware
。但是,你也可以手动注册:
- YAML
- XML
- PHP
1 2 3
服务:App \场所\ MyCustomLocaleHandler:标签:(kernel.locale_aware)
kernel.terminate事件,Symfob娱乐下载ony寻找任何服务标记kernel.reset
标签重新启动他们的状态。这是通过调用的方法,他的名字叫中配置方法
参数的标签。
这是很有用的项目应用程序服务器运行时重用Symfony应用程序请求之间来提高性能。ob娱乐下载这个标签是内置的应用举例数据收集器分析器删除他们所有的信息。
routing.loader:
- YAML
- XML
- PHP
1 2 3
服务:应用\ \ CustomLoader路由:标签:(routing.loader)
有关更多信息,请参见如何创建一个定制的路线装载机。
- YAML
- XML
- PHP
1 2 3
服务:应用\ \ CustomLoader路由:标签:(routing.loader)
表达功能提供者路由表达式的组件。使用这些提供者,您可以定制函数添加到路由表达式语言。
表达功能提供者安全表达组件。使用这些提供者,您可以添加自定义功能安全表达式语言。
AbstractFactory和您的自定义身份验证侦听器扩展AbstractAuthenticationListener,那么你的自定义的身份验证侦听器将自动应用这个标签,它会自动功能。
isGranted ()Symob娱乐下载fony的授权检查器,一个系统的“选民”在幕后决定如果用户应该访问。的security.voter
标记允许您添加您自己的自定义系统的选民。
有关更多信息,阅读如何使用选民来检查用户的权限篇文章。
NormalizerInterface和DenormalizerInterface。
更多细节,请参阅如何使用序列化器吗。
默认的优先级标准化者可以在找到registerSerializerConfiguration ()方法。
翻译:提取命令,它使用提取器提取翻译消息从一个文件中。默认情况下,有一个Symfonyob娱乐下载框架TwigExtractor和一个PhpExtractor,这有助于发现和提取翻译键从树枝模板和PHP文件。
您可以创建自己的器通过创建一个实现类ExtractorInterface和标签的服务translation.extractor
。所需的标签有一个选择:别名
,它定义了萃取器的名称:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日
/ / src / Acme / DemoBundle /翻译/ FooExtractor.php名称空间Acme\DemoBundle\翻译;使用ob娱乐下载\组件\翻译\器\ExtractorInterface;使用ob娱乐下载\组件\翻译\MessageCatalogue;类FooExtractor实现了ExtractorInterface{受保护的美元前缀;/ * * *提取翻译信息从模板目录的目录。* /公共函数提取(美元目录,MessageCatalogue美元目录){/ /……}/ * * *设置前缀应该用于新发现消息。* /公共函数setPrefix(字符串美元前缀){美元这- >前缀=美元前缀;}}
- YAML
- XML
- PHP
1 2 3 4
服务:应用翻译\ \ CustomExtractor:标签:- - - - - -{名称:translation.extractor,别名:喷火}
译器从模板中提取所有消息,矿用汽车执行将消息转储到一个翻译文件在一个特定的格式。
ob娱乐下载Symfony已经伴随着许多的矿用汽车:
- CsvFileDumper
- IcuResFileDumper
- IniFileDumper
- MoFileDumper
- PoFileDumper
- QtFileDumper
- XliffFileDumper
- YamlFileDumper
您可以创建自己的翻车机通过扩展FileDumper或实现DumperInterface和标签的服务translation.dumper
。标签有一个选项:别名
这个名字是用来确定应该使用清洁工人。
- YAML
- XML
- PHP
1 2 3 4
服务:应用翻译\ \ JsonFileDumper:标签:- - - - - -{名称:translation.dumper,别名:json}
twig.extension。如果你使用默认的服务。yaml的配置,服务auto-registered auto-tagged。但是,你也可以手动注册:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9
服务:App \树枝\ AppExtension:标签:(twig.extension)#选择您可以定义的优先级扩展(默认= 0)。#早些时候与更高的优先权注册扩展。这主要是#有用注册后期扩展覆盖其他扩展。App \树枝\ AnotherExtension:标签:[{名称:twig.extension,优先级:-100年})
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9
服务:App \树枝\ AppExtension:标签:(twig.extension)#选择您可以定义的优先级扩展(默认= 0)。#早些时候与更高的优先权注册扩展。这主要是#有用注册后期扩展覆盖其他扩展。App \树枝\ AnotherExtension:标签:[{名称:twig.extension,优先级:-100年})
如何创建实际的嫩枝上的信息扩展类,明白了树枝的文档欧宝官网下载app在主题或阅读如何编写一个定制的树枝扩展篇文章。
树枝装载机- - - - - -FilesystemLoader。如果你需要加载树枝从另一个资源模板,您可以创建一个服务新加载器和标签twig.loader
。
如果你使用默认的服务。yaml的配置,服务将自动标记由于自动配置。但是,你也可以手动注册:
- YAML
- XML
- PHP
1 2 3 4
服务:App \树枝\ CustomLoader:标签:- - - - - -{名称:twig.loader,优先级:0}
请注意
的优先级
是可选的,它的值是一个积极或消极的整数,默认为0
。加载器更高的数字是尝试第一次。
延迟加载树枝扩展被定义为普通的服务,但他们需要标记twig.runtime
。如果你使用默认的服务。yaml的配置,服务auto-registered auto-tagged。但是,你也可以手动注册:
- YAML
- XML
- PHP
1 2 3
服务:App \树枝\ AppExtension:标签:(twig.runtime)
- YAML
- XML
- PHP
1 2 3
服务:App \树枝\ AppExtension:标签:(twig.runtime)
如何创建一个定制的验证约束篇文章。
ObjectInitializerInterface接口。然后,它与标签validator.initializer
标签(没有选项)。
例如,看到DoctrineInitializer
类内部的教义桥。