Php Laravel容器绑定名称:大写与小写

Php Laravel容器绑定名称:大写与小写,php,laravel,laravel-5,inversion-of-control,ioc-container,Php,Laravel,Laravel 5,Inversion Of Control,Ioc Container,我正在学习Laravel的IoC容器是如何工作的。我已经了解了大部分,但有一件事让我思考。为什么有些绑定类型以小写开头,而其他绑定类型以大写开头 我知道对于大写的,我们可以使用自动/手动解析器来解析类名或接口。小写的怎么样?这些问题是否意味着在需要时只能通过手工解决,就像这样 $this->app->make('something'); 或者使用小写绑定还有其他用途吗?它们被用作服务的抽象命名或别名。例如,如果您为一个特定的API服务配置了一个http客户端,您可以将其命名为“cl

我正在学习Laravel的IoC容器是如何工作的。我已经了解了大部分,但有一件事让我思考。为什么有些绑定类型以小写开头,而其他绑定类型以大写开头

我知道对于大写的,我们可以使用自动/手动解析器来解析类名或接口。小写的怎么样?这些问题是否意味着在需要时只能通过手工解决,就像这样

$this->app->make('something');

或者使用小写绑定还有其他用途吗?

它们被用作服务的抽象命名或别名。例如,如果您为一个特定的API服务配置了一个http客户端,您可以将其命名为“client.API”,并在代码中动态解析它

你可以在任何你想去的地方通过

app('client.api')

甚至

$this->app->make('client.api');
它只是服务阵列的一个键


它们还被广泛用作外观中的解析器。

我发现,与PHP的核心行为相反,容器的类解析器是区分大小写的。更重要的是,与类名本身相比,它是区分大小写的,而不是类型提示。所以,如果我们不遵循PSR-2约定并用小写字母命名我们的类,它可能会被别名自动解析。我说的对吗?从容器中解析只有两种方法:按参数自动解析和按应用程序(“别名”)手动解析,以及类似的方法?容器只是一个关联数组,其中键是字符串名称,值是服务。当然,如果您将服务命名为“SomeThing”,并尝试将其作为“SomeThing”获取,您将得到一个错误。所以,是的,你必须像你命名的那样正确地解决它们。如果您像完整的类名一样绑定它们,您将能够自动解决它们。但是,如果您抽象地命名它们,您将不得不手动解析它们。非常感谢您的解释!不客气!别忘了接受答案;)
$this->app->make('client.api');