不知道为什么会出现这种情况
去看看php-di是如何使用的
可是官方文档实例也没跑起来,还需要看php-di文档?
config/container.php 配置: $builder = new \DI\ContainerBuilder(); $builder->addDefinitions(config('dependence', [])); $builder->useAutowiring(true); $builder->useAnnotations(true); return $builder->build();
发一个能重现这个问题的精简demo压缩包,发到我邮箱 walkor#workerman.net
好
测试了下,目前看确实不能这样循环引用。 这种情况需要使用 自定义接口注入。 稍后这边完善下文档
好的,谢谢大佬
应该是可以的,头部记得要加 use app\service\UserServiceInterface;
这边按照手册测试没有问题
晚上我重新建一个项目试下,如果复现再给您发送下demo
demo已经发送到walkor#workerman.net邮箱了
你没有定义这个接口导致的
发送的demo中 interface和class都放在Mailer.php中
<?php namespace app\service;
interface MailerInterface { public function mail($email, $content); }
class Mailer implements MailerInterface { private $smtpHost;
private $smtpPort; public function __construct($smtp_host, $smtp_port) { $this->smtpHost = $smtp_host; $this->smtpPort = $smtp_port; } public function mail($email, $content) { // 发送邮件代码省略 echo 'send main'; }
}
文件要单独放,不然不符合psr4规则,composer加载不到
可是官方文档实例也没跑起来,还需要看php-di文档?
config/container.php 配置:
$builder = new \DI\ContainerBuilder();
$builder->addDefinitions(config('dependence', []));
$builder->useAutowiring(true);
$builder->useAnnotations(true);
return $builder->build();
发一个能重现这个问题的精简demo压缩包,发到我邮箱 walkor#workerman.net
好
测试了下,目前看确实不能这样循环引用。
这种情况需要使用 自定义接口注入。
稍后这边完善下文档
好的,谢谢大佬
应该是可以的,头部记得要加 use app\service\UserServiceInterface;
这边按照手册测试没有问题
晚上我重新建一个项目试下,如果复现再给您发送下demo
demo已经发送到walkor#workerman.net邮箱了
你没有定义这个接口导致的
发送的demo中 interface和class都放在Mailer.php中
<?php
namespace app\service;
interface MailerInterface
{
public function mail($email, $content);
}
class Mailer implements MailerInterface
{
private $smtpHost;
}
文件要单独放,不然不符合psr4规则,composer加载不到