laravel中的自定义类未被识别

时间:2016-12-18 22:10:41

标签: php laravel laravel-5

所以我一直在尝试为我的所有自定义类创建一个自定义类文件并将它们附加到那里,我使用名称空间来完成在我的控制器中使用它们但是控制器没有识别类

确定:

以下是我的项目app/Library/robloxClasses.php

中的自定义类文件
namespace App\Library; 

class RobloxMaths{
    public function sortArrayOfArray(&$array, $subfield)
    {
            $sortarray = array();
            foreach ($array as $key => $row)
            {
                $sortarray[$key] = $row[$subfield];
            }

            array_multisort($sortarray, SORT_DESC, $array);
    }
}

Library是我用来存储我所有自定义类文件的文件夹

以下是我的控制器ApiController如何使用文件命名空间

<?php

namespace App\Http\Controllers;

use App\Library\RobloxMaths;
use Illuminate\Http\Request;


class ApiController extends Controller
{

protected $RobloxClass;
    public function __construct(){
        $this->$RobloxClass= new RobloxMaths;
    }
}
?>

问题是,它一直在返回:

Class 'App\Library\RobloxMaths' not found

老实说我不知道​​出了什么问题,请帮忙!

注意:我已经尝试过作曲家更新,并且它会暂时修复它但是在一两天之后或者在我安装新依赖项之后它会通知我没有找到类'App \ Library \ RobloxMaths'事情发生了

请帮助

1 个答案:

答案 0 :(得分:0)

确保已在composer.json文件中正确设置了psr-4自动加载根目录,并且文件名/目录名完全匹配,包括大小写,然后然后运行composer dump-autoload

示例:

"autoload": {
    "psr-4": {
        "App\\": "app/"
    }
}

这会将根命名空间App分配到app文件夹。

如果您使用的是IDE,则很有可能usenamespace语句都是用小写的app自动生成的,以匹配目录名。由于所有名称都可以在IDE中正确关联,因此没有错误,但是在运行PHP脚本时,自动加载器不会对文件执行require|require_once,因此您的类不可用。

选项1(执行此操作)

确保您的名称空间具有与composer.json条目匹配的大小写。

选项2(需填写)

确保为此根名称空间添加新条目到composer.json文件中。对于上面的示例,这将是:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "app\\": "app/"
    }
}