在 Laravel 7 中自动加载自定义包

Posted

技术标签:

【中文标题】在 Laravel 7 中自动加载自定义包【英文标题】:Autoloading a custom package in Laravel7 【发布时间】:2020-10-22 04:39:22 【问题描述】:

对不起,如果我的问题看起来很简单......

我正在尝试在全新的 Laravel7 安装中使用以下软件包。

https://github.com/phpclassic/php-shopify

就像他们提到的那样,我使用“composer require phpclassic/php-shopify”命令来安装这个包。它已成功完成,我在“供应商/phpclassic/php-shopify/”文件夹下看到它。现在我想在我的控制器中使用它...

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PHPShopify\ShopifySDK;

class ShopifyConnectionController extends Controller

    function index(Request $request)

        $config = array(
            'ShopUrl' => config('app.shopify_app_url'),
            'ApiKey' => config('app.shopify_app_api_key'),
            'SharedSecret' => config('app.shopify_app_api_secret'),
        );

        PHPShopify\ShopifySDK::config($config);
        dd($request->all());
    

?>

出现以下错误...

Error
Class 'App\Http\Controllers\PHPShopify\ShopifySDK' not found 

现在我看到包没有自动加载。我尝试使用“composer dump-autoload”命令,并尝试在 composer.json 文件的自动加载部分添加文件夹路径,等等……我一直收到同样的错误……我还注意到“composer dump-autoload”命令显示...

Discovered Package: facade/ignition 
Discovered Package: fideloper/proxy
etc...

但不是我安装的包。那些发现的软件包也在同一个供应商文件夹中。那么为什么当我运行该命令时 Composer 自动加载没有发现我的包?有人好心帮忙。

【问题讨论】:

【参考方案1】:

您只是缺少一个反斜杠。这告诉自动加载器您要查找的文件不在您的控制器所在的命名空间中。

\PHPShopify\ShopifySDK::config($config);

由于您已经导入了ShopifySDK,因此不需要 FQCN。只需使用类:

ShopifySDK::config($config);

【讨论】:

所以我实际上忘了提及 Laravel 没有发现该包,因为它缺少 Laravel 包的一些关键组件,service provider 和包含服务提供商 FQCN 的 extra.laravel option composer.json. 好的。谢谢(你的)信息。是的,它不是专门为 Laravel 框架开发的包。

以上是关于在 Laravel 7 中自动加载自定义包的主要内容,如果未能解决你的问题,请参考以下文章

laravel自定义公共函数

自定义包的类不会使用composer autoloader自动加载

laravel5.6laravel 自定义公共函数

laravel怎么自动加载Model和一些常用的类

Laravel 学习笔记之 Composer 自动加载

PHPUnit 自动加载器错误:找不到类“Yii”