将 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 包
应该如何为 laravel 4 composer 包设置 git 子模块?