使用 Symfony 组件演示 PHP 中的依赖注入

2023年 8月 29日 32.7k 0

使用 Symfony 组件演示 PHP 中的依赖注入

在本文中,我们将介绍一些使用 Symfony DependencyInjection 组件的示例。您将学习依赖注入的基础知识,它允许干净和模块化的代码,并且您将了解如何在带有 Symfony 组件的 PHP 应用程序中使用它。

什么是 Symfony DependencyInjection 组件?

Symfony DependencyInjection 组件提供了一种在 PHP 应用程序中实例化对象和处理依赖关系管理的标准方法。 DependencyInjection 组件的核心是一个容器,它保存应用程序中所有可用的服务。

在应用程序的引导阶段,您应该将应用程序中的所有服务注册到容器中。在稍后阶段,容器负责根据需要创建服务。更重要的是,容器还负责创建和注入服务的依赖项。

这种方法的好处是您不必对实例化对象的过程进行硬编码,因为将自动检测并注入依赖项。这会在应用程序的各个部分之间创建松散耦合。

在本文中,我们将探讨如何释放 DependencyInjection 组件的强大功能。像往常一样,我们将从安装和配置说明开始,然后实现一些实际示例来演示关键概念。

安装和配置

在本节中,我们将继续安装 DependencyInjection 组件。我假设您已经在系统中安装了 Composer,因为我们需要它来安装 Packagist 上提供的 DependencyInjection 组件。

因此,请继续使用以下命令安装 DependencyInjection 组件。

$composer require symfony/dependency-injection

登录后复制

这应该创建了 composer.json 文件,它应该如下所示:

{
"require": {
"symfony/dependency-injection": "^5.4"
}
}

登录后复制

我们还将安装一些在我们的示例中有用的其他组件。

如果您想从 YAML 文件加载服务而不是在 PHP 代码中定义它,那么 Yaml 组件就可以派上用场,因为它可以帮助您将 YAML 字符串转换为 PHP 兼容的数据类型,反之亦然。

$composer require symfony/yaml

登录后复制

最后,我们将安装 Config 组件,它提供了几个实用程序类来初始化和处理在不同类型的文件(如 YAML、INI 和 XML)中定义的配置值。在我们的例子中,我们将使用它从 YAML 文件加载服务。

$composer require symfony/config

登录后复制

让我们将 composer.json 文件修改为如下所示。

{
"require": {
"symfony/dependency-injection": "^5.4",
"symfony/yaml": "^5.4",
"symfony/config": "^5.4"
},
"autoload": {
"psr-4": {
"Services\": "src"
},
"classmap": ["src"]
}
}

登录后复制

由于我们添加了新的 classmap 条目,让我们继续通过运行以下命令来更新 Composer 自动加载器。

$composer dump -o

登录后复制

现在,您可以使用 Services 命名空间来自动加载 src 目录下的类。

这就是安装部分,但是你应该如何使用它呢?事实上,只需将 Composer 创建的 autoload.php 文件包含在您的应用程序中即可,如以下代码片段所示。

登录后复制

如何使用容器

在本节中,我们将通过一个示例来演示如何将服务注入到容器中。容器应该充当中央存储库,保存应用程序中的所有服务。稍后,我们可以使用容器来根据需要获取服务。

首先,让我们继续在 src/DemoService.php 中定义一个非常基本的服务,其中包含以下内容。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论