0
我有幾個DiTest命名空間下的示例類;如何在symfony /依賴注入中使自動佈線工作?
namespace DiTest;
class Transport
{
public function send($mail)
{
echo $mail . PHP_EOL;
echo 'Mail Sent';
}
}
class Mailer
{
protected $transport;
public function __construct(Transport $transport)
{
$this->transport = $transport;
}
public function send($mail)
{
if ($this->transport) {
$this->transport->send($mail);
} else {
echo 'No transport set!' . PHP_EOL;
}
}
}
然後我有這個yaml配置文件;
services:
transport:
class: DiTest\Transport
mailer:
class: DiTest\Mailer
autowire: true
最後我有這樣的index.php中
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
require_once __DIR__.'/vendor/autoload.php';
$container = new ContainerBuilder();
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '\src'));
$loader->load('services.yml');
$mailer = $container->get('mailer');
$mailer->send('Hello world!');
它試圖實例化梅勒類沒有通過構造函數的參數。任何人都可以告訴我哪裏出錯了。
我們應該如何調試自動裝配問題?
我可以回答最後一個問題:通過不使用autowire調試autowire。你在使用S2.8嗎? – Cerad
我認爲autowire只能用於快速原型設計。我只使用依賴注入,配置和yaml。它們都是3.2版本。我只想看看symfony的di容器如何工作。 – srayner