【问题标题】:How to stop Laravel (5.4) thinking a 3rd party API call is a Laravel controller?如何阻止 Laravel (5.4) 认为 3rd 方 API 调用是 Laravel 控制器?
【发布时间】:2017-07-05 21:35:24
【问题描述】:

我正在尝试将第 3 方库(此视频网站 API:https://github.com/SproutVideo/sproutvideo-php)与我的 Laravel 网站集成。但我认为这是一个笼统的问题。

视频 API 指示我这样调用它:

SproutVideo::$api_key = 'abcd1234';

$token = SproutVideo\UploadToken::create_upload_token();

我将这些调用放在我的一个 Laravel 控制器中的一个函数中。不幸的是,当调用此函数时,我收到以下错误:

(对于上面的第一个示例调用)

FatalThrowableError
Class 'App\Http\Controllers\SproutVideo' not found

(或第二个:)

FatalThrowableError
Class 'App\Http\Controllers\SproutVideo\UploadToken' not found

(我认为)我在 Controller 文件的顶部包含了 Sproutvideo 库:

require '../vendor/autoload.php'; // Load SproutVideo API library

那么如何让 Laravel 不再认为 Sproutvideo API 调用是 Laravel 控制器调用,而是让它们传递到 Sproutvideo 库?

谢谢

【问题讨论】:

    标签: php laravel-5 laravel-5.4


    【解决方案1】:

    你必须在顶部导入它

    use (Path To Lib in vendor directory)
    

    然后它是命名空间的,你可以使用它。否则直接在代码中使用完全限定的命名空间。

    虽然你通过自动加载来导入它(使用 Laravel 顺便说一句 * 时,控制器类本身不应该发生这种情况),你必须告诉控制器类命名空间。

    Have a look here

    • 自动加载器位于 /bootstrap/autoload.php 并再次引用 /vendor/autoload.php。它在/public/index.php 中调用。无论如何,每个请求都会调用它:)

    【讨论】:

    • 非常有帮助,谢谢。我把使用 \Sproutvideo 放在顶部,它工作。或者我发现在每个 Sproutvideo:: 调用之前放置一个 \ 也可以。
    • 那么自动加载应该在哪里发生呢?谢谢
    猜你喜欢
    • 2017-09-20
    • 2018-03-28
    • 2018-03-19
    • 2018-03-27
    • 2021-08-02
    • 2019-09-09
    • 2018-01-20
    • 2015-02-25
    • 1970-01-01
    相关资源
    最近更新 更多