【发布时间】:2015-05-12 13:41:46
【问题描述】:
我正在阅读教程here,并在ServiceProvider 中运行了以下代码块。
public function register()
{
$this->app->bind("chat.emitter", function ()
{
return new EventEmitter();
});
$this->app->bind("chat.chat", function ()
{
return new Chat($this->app->make("chat.emitter"));
});
$this->app->bind("chat.user", function ()
{
return new User();
});
$this->app->bind("chat.command.serve", function ()
{
return new Command\Serve($this->app->make("chat.chat"));
});
$this->commands("chat.command.serve");
}
public function provides()
{
return [
"chat.chat",
"chat.command.serve",
"chat.emitter",
"chat.server"
];
}
我有些困惑:
为什么
provides函数(特别是“chat.server”)中的字符串与register函数中绑定的字符串不匹配?不需要提供来告诉IoC什么是可用的,什么是绑定的吗?当某些东西被
app绑定时,用于绑定它的字符串的约定是什么?例如,在上面的代码中,“chat.emitter”返回一个EventEmitter,但EventEmitter类与聊天文件夹无关。事实上,它位于Evenement包中。此外,“聊天”不是 namspace 的顶部,Formativ是。为什么不是“formativ.chat.user”?那么,这里的标准是什么?该字符串的每一段是什么意思?
【问题讨论】:
-
provides不准确返回用作绑定的字符串吗?在我看来是正确的 -
@lukasgeiter 我在任何地方都看不到
"chat.server"。我会澄清这就是我的问题出现的地方。 -
哦,你是对的。我想知道这是否只是教程中的一个错误......
标签: php laravel inversion-of-control service-provider