gpt4 book ai didi

php - Symfony - 如何为 symfony 服务选择正确的接口(interface)(类型提示)?

转载 作者:行者123 更新时间:2023-12-04 16:57:10 30 4
gpt4 key购买 nike

我经常在猜测正确的界面时遇到困难
包括一项服务。例如,这是获得路由器的推荐方式。

use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

class SomeService
{
private $router;

public function __construct(UrlGeneratorInterface $router)
{
$this->router = $router;
}
}

我想,我在这里得到的是“供应商\symfony\routing\Router.php”。
但是Router类实现了RouterInterface、RequestMatcherInterface。
不是 UrlGeneratorInterface!

我不明白这背后的逻辑。
谢谢你的帮助。

最佳答案

https://symfony.com/doc/current/service_container/autowiring.html#working-with-interfaces

实践实际上是将您键入提示的接口(interface)别名为您要注入(inject)的类。因此,如果您想要与 Router 不同的类别将被注入(inject),在 services.yml做:

// services.yml
services:
App\Util\Router: ~

Symfony\Component\Routing\Generator\UrlGeneratorInterface: '@App\Util\Router'

As long as there is only one class implementing the interface and that class is part of the same namespace configuring the alias is not mandatory and Symfony will automatically create one.



为什么你的案例有效?遗产。

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/RouterInterface.php
interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface

关于php - Symfony - 如何为 symfony 服务选择正确的接口(interface)(类型提示)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778742/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com