将 Composer 包添加到 Laravel Providers 数组

Posted

技术标签:

【中文标题】将 Composer 包添加到 Laravel Providers 数组【英文标题】:Adding Composer Package to Laravel Providers array 【发布时间】:2015-11-01 10:29:27 【问题描述】:

我想了解各种作曲家包的路径是如何在 Laravel 的 app.php 的 providers 数组中构造的。一些文档包括您需要复制/粘贴的行,但我想自己了解如何执行此操作。

示例

JWTAuth 包有以下行:

Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class

但是,这个类的路径是tymon\jwt-auth\src\JWTAuthServiceProvider.php

我想知道这条路是怎么构造的。

接下来我想知道如何将 Woothemes/Woocommerce api 包包含在 providers 数组中。如何构建这条路径?

可以在 https://packagist.org/packages/woothemes/woocommerce-api

找到该软件包

我做了一些研究,发现这个包并不是专门为 Laravel 编写的。引导文件 woocommerce-api.php 仅包含类的 require_once() 函数。

这样做是否可以接受,

require_once base_path('vendor/woothemes/woocommerce-api/woocommerce-api.php');

在我的控制器文件中?

【问题讨论】:

【参考方案1】:

这个

Tymon\JWTAuth\Providers\JWTAuthServiceProvider

不是文件系统路径,而是类的命名空间。

由于您链接到的包不是为 laravel 编写的,因此还没有它的 ServiceProvider,但是you are free to create one。

但是,您可以在 laravel 中使用没有 ServiceProvider 的每个外部包。你不会require_once 任何东西,但你会

use FullNamespace\Name\To\Class

在文件的顶部,例如看看你的一个控制器,它和这里的一样:

<?php namespace App\CreateTables;

use Config;
use Illuminate\Database\Schema\Blueprint;
use MeineBuyBox\UserDatabase;
use Schema;

这样,您打算使用的类将被加载到您需要它所在的文件中,您现在就可以使用它了。

【讨论】:

包括我需要的类的“使用”语句工作,但我在我的应用程序目录中添加了一个“库文件夹”并将这个文件夹包含在 composer.json 中。做了作曲家转储自动加载,错误消失了。 你在libraries folder 中包含了什么?我希望不是这个包,因为当你这样做时composer update 这个包将被忽略。

以上是关于将 Composer 包添加到 Laravel Providers 数组的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在控制器中使用非 Laravel Composer 包

Composer/Laravel:如何添加/更新特定的包

应该如何为 laravel 4 composer 包设置 git 子模块?

如何正确使用 Composer 安装 Laravel 扩展包

使用作曲家安装 Laravel 4 包

Laravel 4 包没有正确加载类路径