如何在 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 中使用第三方包?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:通过发布第三方包来更新 .env 文件

如何在laravel框架中使用阿里云的oos

谷歌 reCaptcha 与 Laravel

laravel 5.2 引入第三方类

如何在插件开发中正确使用第三方jar包

laravel框架之redis使用