Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有任何第三方框架的PHP-DI入门_Php_Dependency Injection_Php Di - Fatal编程技术网

没有任何第三方框架的PHP-DI入门

没有任何第三方框架的PHP-DI入门,php,dependency-injection,php-di,Php,Dependency Injection,Php Di,我刚刚发现依赖注入,我想把它应用到我一直在从事的一个中型项目中。我已经有了一个classes文件夹,其中保存了系统中使用的所有类 /应用程序/核心/类 我想知道如何配置PHP-DI来根据需要定位这些类 在此提前感谢PHP-DI的作者,您是用Composer安装它的吗 如果是,则在composer.json中配置文件夹,只需在脚本中输入vendor/autoload.php。然后就可以开始使用容器了,它应该可以正常工作了。例如: $container = \DI\ContainerBuilder:

我刚刚发现依赖注入,我想把它应用到我一直在从事的一个中型项目中。我已经有了一个classes文件夹,其中保存了系统中使用的所有类

/应用程序/核心/类

我想知道如何配置PHP-DI来根据需要定位这些类


在此提前感谢PHP-DI的作者,您是用Composer安装它的吗

如果是,则在
composer.json
中配置文件夹,只需在脚本中输入
vendor/autoload.php
。然后就可以开始使用容器了,它应该可以正常工作了。例如:

$container = \DI\ContainerBuilder::buildDevContainer();

$yourObject = $container->get('YourClass');
现在请注意,这个示例是而不是依赖注入(正如您可以看到的,这里没有任何注入)。当您从容器(
$container->get()
)获取对象时,您正在将代码耦合到容器

可以在应用程序的根目录下执行此操作,例如实例化控制器(或您想要的任何其他根目录对象)。但是控制器的依赖项应该被注入,而不是从容器中获取(如果您想进行依赖项注入)


顺便说一句,如果你想讨论更多的话题,这里有一个聊天室:当然。

你不是说
DI
而是想
\u autoload
?另外,当您不需要时,请不要使用
DI
@Forien-我已经意识到自动加载,我使用它,但它真的会有帮助,因为我的类不允许有很多灵活性,而DIReally@Forien就足够了,你引用Marston的话?¯_(ツ)_/“@Forien你是认真的吗?那家伙想了解DI,而你只是甩了甩“请不要在你不需要的时候使用它”…可能会说“请停止你的学习,因为我不喜欢它”。非常感谢您的回复,但我没有使用Composer,我是否可以将其直接集成到我的项目中?是的,这是可能的。您需要下载PHP-DI并下载其依赖项(以及这些依赖项的依赖项)然后在你的自动加载器中注册这些类。现在你可能会明白为什么使用Composer要简单得多,不妨试试;)另外,将你自己的类添加到你的自动加载器中。你已经开始尝试使用Composer,并且肯定会开始使用它:-)谢谢