如何在 Laravel 中使用第三方包?
Posted
技术标签:
【中文标题】如何在 Laravel 中使用第三方包?【英文标题】:How to use third party package in Laravel? 【发布时间】:2014-02-27 02:27:20 【问题描述】:我正在使用 Laravel 4,我想在这个框架内使用第三方包。我这样做是为了安装它:
1) 在 composer.json 文件中添加包名
2) 运行composer update
命令
现在我在 /vendors 文件夹中有可用的软件包。我的问题是,现在如何在 Laravel 中使用它?
查看 config/app.php 文件,据我所知,我无法将其添加到“providers”数组中,也无法添加“别名”。
当我尝试直接在控制器中实例化该包类时,我收到错误“找不到类”(我尝试了类的全名:$pack = new /vendor/package.../class.php
)
非常感谢任何有关如何在 laravel 中包含和使用该类的帮助
【问题讨论】:
如果您给我们包裹网址,我们会帮助您。 【参考方案1】:如果包提供了ServiceProvider,添加到app/config/app.php
。
否则作曲家已经为您处理了自动加载,所以您只需:
$package = new Package;
在包被命名空间的情况下,你必须:
$package = new PackageNamespace\Package;
可以肯定的是,看看vendor/composer/autoload_*
文件,通常是vendor/composer/autoload_classmap.php
,搜索包名或类名,你会看到它是如何命名的。或者直接看一下主包源文件,一般在:
vendor/vendorName/packageName/[src or lib or whatever]/Package.php
编辑
我只是在这里安装并做到了:
Route::get('test', function()
dd(new WideImage\WideImage);
);
像魅力一样工作。这个包在我上面写的“命名空间”的情况下。
【讨论】:
非常感谢您的回复 Antonio,我刚刚尝试过,但不知何故它仍然无法识别类。我正在使用wideimage packagist.org/packages/smottt/wideimage 尝试此操作,我检查了您提到的文件,是的,它已加载到composer/autoload_classmap.php 中。名称似乎是 WideImage。我试过new WideImage
,但没有用以上是关于如何在 Laravel 中使用第三方包?的主要内容,如果未能解决你的问题,请参考以下文章