【问题标题】:Laravel 5.4 application can't load custom class in custom directoryLaravel 5.4 应用程序无法在自定义目录中加载自定义类
【发布时间】:2017-07-24 21:49:27
【问题描述】:

我关注了this answer 和其他一些,但无法完成这项工作。

我在 App -> libraries 中有自定义目录,其中包含自定义 php 类。在 composer.json 我已将其添加到 psr-4 部分

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/",
        "libraries\\": "app/libraries"

    }
},

在我想使用 App\Http\Controller\OrderController.php 类的控制器中,我添加了这个

use App\libraries\API; // on top of the page


class OrderController extends BaseController
{
    public function orderSubmit()
    {
           // some code 
        API::convertUSDToEUR($product['price']);
    }
}

错误

未找到 FatalThrowableError 类 'App\libraries\API'

我也做过composer dump-autoload

【问题讨论】:

  • 试过use libraries\API; ?
  • 是的,只有use API;,并尝试过libraries\API::convertUSDToEUR($product['price']);
  • 我认为这可能是一个命名空间问题,你试过了吗:namespace App\Libraries; 然后use API;
  • 把这个命名空间namespace App\Libraries;放在哪里?因为在我想使用它的控制器中我已经有namespace App\Http\Controllers;
  • BTW 在视图中我没有这个问题。如果我这样做 {{ API::convertUSDToEUR($product['price']) }} 它正在工作。但是当我尝试调用控制器时出现上述错误

标签: laravel laravel-5


【解决方案1】:

API 未在当前命名空间中定义。您应该可以像 new \API(...) 或这样称呼它。

use API; 


class OrderController extends BaseController
{
    public function orderSubmit()
    {
           // some code 
        $convert = new API;
        $convert->convertUSDToEUR($product['price']);
    }
}

编辑:composer.json 中的这个声明也可以工作。 Laravel 它将加载 autoload 中的所有内容

"autoload": {
    "classmap": [
        "database",
        "app/libraries"
    ],
    "psr-4": {
        "App\\": "app/"

    }
},

【讨论】:

  • 感谢您的回答,马上试试
  • 是的,它正在工作!我已经尝试添加use API;,但没有尝试创建new API;..
猜你喜欢
  • 2015-02-15
  • 2020-07-14
  • 1970-01-01
  • 2017-08-27
  • 2017-12-14
  • 2018-01-10
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
相关资源
最近更新 更多