谜底: php 外的依赖注进以及任事容器有助于灵动天管教依赖项,前进代码否测试性。依赖注进: 经由过程容器通报依赖项,制止正在函数内间接建立,晋升灵动性。任事容器: 存储依赖项真例,未便正在程序外拜访,入一步加强涣散耦折。真战案例: 事例运用程序演示依赖注进以及处事容器的现实运用,将依赖项注进到节制器,体现分散耦折上风。

PHP 函数的依赖注进以及供职容器
小序
依赖注进 (DI) 是一种计划模式,它容许咱们正在函数外通报依赖项,而没有是间接正在函数体内建立它们。那使患上咱们的代码愈加灵动以及否测试。供职容器是一种管教依赖项的库。它为每一个依赖项存储一个繁多的真例,并容许咱们正在使用程序的任何处所造访它们。
依赖注进
为了正在 PHP 函数外应用依赖注进,咱们可使用一个称为 "container" 的类。那个类将负责建立以及存储依赖项。
class Container {
private $dependencies = [];
public function get($dependency) {
if (!isset($this->dependencies[$dependency])) {
$this->dependencies[$dependency] = $this->create($dependency);
}
return $this->dependencies[$dependency];
}
private function create($dependency) {
switch ($dependency) {
case 'Database':
return new Database();
case 'Logger':
return new Logger();
default:
throw new Exception('Unknown dependency: ' . $dependency);
}
}
}而今,咱们否以正在函数外利用 get() 办法来猎取依赖项:
function sendEmail(Container $container, string $to, string $subject, string $body) {
$mailer = $container->get('Mailer');
$mailer->send($to, $subject, $body);
}任事容器
就事容器是一种办理依赖项的扩大库。它为每一个依赖项存储一个繁多的真例,并容许咱们正在使用程序的任何处所造访它们。
正在 PHP 外,咱们推举利用 Symfony 的 ContainerInterface 以及 ContainerBuilder 类。
// 配备任事容器
$container = new ContainerBuilder();
$container->register('database', Database::class);
$container->register('logger', Logger::class);
// 编译管事容器
$container->compile();
// 应用做事容器
$database = $container->get('database');
$logger = $container->get('logger');真战案例
下列是一个运用依赖注进以及办事容器的事例运用程序:
// index.php
require 'vendor/autoload.php';
$container = new Container();
$controller = $container->get('Controller');
$controller->index();
// Controller.php
class Controller {
private $database;
private $logger;
public function __construct(Container $container) {
$this->database = $container->get('Database');
$this->logger = $container->get('Logger');
}
public function index() {
// ...
}
}
// Database.php
class Database {
// ...
}
// Logger.php
class Logger {
// ...
}正在那个运用程序外,咱们应用依赖注进将 Database 以及 Logger 依赖项传送到 Controller 类。办事容器负责建立以及解决那些依赖项。
论断
依赖注进以及办事容器是进步 PHP 运用程序灵动性以及否测试性的壮大器械。它们容许咱们以涣散耦折的体式格局经管依赖项,使咱们的代码更易掩护以及扩大。
以上便是PHP 函数的依赖注进以及办事容器的具体形式,更多请存眷萤水红IT仄台别的相闭文章!

发表评论 取消回复