【问题标题】:Where to put libraries for the IoC Container to work in Laravel?在 Laravel 中将 IoC 容器的库放在哪里?
【发布时间】:2013-03-29 17:25:49
【问题描述】:

IoC 容器对我来说是一个复杂的主题,并且来自 Codeigniter 背景(您可以在其中复制和粘贴一个库,并且通过将其包含在 include_once() 中来工作),这是一个很难包装我的概念转过头来。

我正在尝试将Graufette 用于我的项目,并且我认为我需要使用 IoC 容器,以便我可以加载库并使用它。事情是这样的:

  • 我不知道把库文件放在哪里
  • 不知道把注册IoC容器的代码放在哪里
  • 我不知道如何加载libraries文件夹外的库

根据 Dayle Rees 先生的说法,you simply register the container in application/start.php 并在您的控制器中使用 IoC::resolve() 调用它。问题是他没有指定在哪里你把要注册的文件放在哪里(或者你是否可以把IoC::register()代码放在别处)。

我不会盲目地说“在库文件夹中”,因为正如我所见,它们会自动加载(并且可以静态访问)。对于 Gaufrette 和其他库(如 SwiftMailer,但这是另一回事,因为有一个捆绑包),情况并非如此。

我可以将这些文件放在哪里并使用 IoC 容器加载它们?有必要这样做吗?

【问题讨论】:

    标签: ioc-container laravel


    【解决方案1】:

    我只是简单地查看了这个库的自述文件,在我看来,您应该将其放入 libraries 目录,或者创建 vendor 目录并将其放入其中。从它的外观来看,您应该自动加载它。自动加载后,您可以使用 IoC 绑定它的实例并每次检索该实例,而不必每次要使用它时都设置库。

    【讨论】:

    • 既然您提到了供应商,我尝试使用 Composer 并创建了供应商文件夹。因为它是一个 PSR-0 编译库,所以我在 start.php 中使用了 Autoloader::namespace() 方法,指向vendor/knplabs/gaufrette/src/Gaufrette,它加载得很好。不知道我是否需要使用 IoC 容器,但是 vendor 是使用的地方!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2018-09-22
    相关资源
    最近更新 更多