>本文探讨了Symfony2捆绑配置及其与依赖项注入容器的相互作用。 这些概念对于新来者,尤其是那些不熟悉依赖注入的概念可能具有挑战性。 尽管Symfony支持XML和PHP数组,但此处使用YAML的示例。 选择取决于偏好。没有单个“最佳”选项。
密钥概念:
- > symfony捆绑包:类似于插件,捆绑包装功能(博客,论坛等)。它们促进模块化和代码重复使用。 它们可以是预先建造的或定制的。
- 捆绑配置:可以直接在主应用程序配置文件(更简单,便携式)或专用的捆绑式配置文件(更模块化和可重复使用)中进行配置。 使用扩展类的语义配置为复杂的,可分布的捆绑包提供了最大的灵活性。
- >依赖项注入容器: 管理服务生命周期和依赖项,从而导致更清洁,更可维护和可测试的代码。
-
>调试:>使用
debug:container
>和debug:config
之类的控制台命令来对服务注册和配置进行故障。 >
捆绑创建:
捆绑包是包含文件(PHP,CSS,JavaScript,Images)的目录,实现了一个功能。 在Symfony2中,几乎所有内容都是一捆。 当创建捆绑包(手动或使用php app/console generate:bundle
)时,BundleNameBundle.php
文件至关重要。 它的类扩展SymfonyComponentHttpKernelBundleBundle
,并在AppKernel::registerBundles()
中注册捆绑包。 可选的BundleNameExtension.php
(在DependencyInjection
文件夹中)加载并管理捆绑包的配置。
>加载捆绑式配置(简单的方式):
>最简单的方法直接在app/config/config.yml
中直接配置参数和服务。在功能上,这将捆绑包与应用程序紧密地耦合,从而限制可移植性。 一个更好(尽管仍然不太理想)的替代方法是在捆绑包中创建一个单独的配置文件(例如,Resources/config/services.yml
),然后将其导入到主配置文件中:
imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: ../../src/Cvuorinen/ExampleBundle/Resources/config/services.yml }
>加载束配置(语义方式):>
BundleNameExtension.php
类处理配置加载。它使用Configuration.php
类(也在DependencyInjection
中)来验证和处理app/config/
的捆绑相关配置。 然后,该扩展名使用加载程序(例如,Resources/config/
)加载束特异性配置(来自YamlFileLoader
)。 此处定义的服务可以使用主要应用程序配置中的参数。 这种方法对于创建可重复使用的,可分发的捆绑包特别有用。
>配置文件结构:
>配置文件主要包含参数和服务。
>-
参数:
键下。 最佳实践是将服务类名称定义为具有更好可扩展性的参数。 parameters
> -
服务:包含业务逻辑的类。 在配置文件利用依赖性注入中定义它们。
:services.yml
imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: ../../src/Cvuorinen/ExampleBundle/Resources/config/services.yml }>使用
测试和调试配置。app/console container:debug
>
在控制器中使用服务:
Greeter
parameters: cvuorinen_example.greeter.class: Cvuorinen\ExampleBundle\Service\Greeter cvuorinen_example.greeter.greeting: "Hello" services: cvuorinen_example.greeter: class: %cvuorinen_example.greeter.class% arguments: [%cvuorinen_example.greeter.greeting%]
namespace Cvuorinen\ExampleBundle\Service; class Greeter { public function greet($name) { return "Hello $name"; } }依赖项注入:
上面的示例显示了基本的构造函数注入。 Symfony还支持设定器和财产注入。 可以将服务宣布为私人以限制其可访问性。 工厂可用于创建服务(例如,使用Doctrine Entity Manager创建存储库)。
结论:>这提供了符号束配置和依赖注入的全面概述。 鼓励进一步探索高级主题(覆盖配置,参数共享,将控制器定义为服务)。 请记住要查阅官方的Symfony文档以获取详细信息。 避免将服务容器本身注入服务,以保持宽松的耦合。 考虑到上面的详细说明,省略了常见问题解答部分。
>
以上是了解Symfony Bundle配置和服务容器的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。

自动加载PHP会在需要时自动加载类文件,从而通过减少内存使用和增强代码组织来提高性能。最佳实践包括使用PSR-4和有效组织代码。

本文讨论了在PHP中管理文件上传大小的管理,重点是2MB的默认限制以及如何通过修改PHP.INI设置来增加它。

本文讨论了PHP 7.1中引入的PHP中的无效类型,允许变量或参数为指定类型或NULL。它突出显示了诸如提高可读性,类型安全性和明确意图的好处,并解释了如何声明

本文讨论了unset()和unlink()功能在编程中的差异,重点关注其目的和用例。 unset()从内存中删除变量,而unlink()从文件系统中删除文件。两者都对效率至关重要

PHP特征在单个继承上下文中启用代码重复使用,从而提供可重复性和简化继承之类的好处。它们可以有效地与传统的继承相结合,以增强阶级灵活性和模块化。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

记事本++7.3.1
好用且免费的代码编辑器