我刚开始使用 Laravel ,想要创建一个自定义类,并希望在每个控制器中调用此类。为此,我在Customer
文件夹中创建了一个app/Library/
类。
当我尝试通过composer自动加载这个库时,json发出错误:
无法扫描“App / Library / Customer”中的类,这些类似乎不是文件,也不是文件夹。
我们如何在控制器中使用自动加载类?
Customer.php
<?php
namespace App\Library;
use App\Model\User;
class Customer
{
public function login($user_name,$password){
$data = User::where('email', $user_name)
->where('password', $password)
->first();
return $data->id';
}
}
Composer.json的自动加载部分
{
"autoload": {
"classmap": [
"database",
"app/Library/Customer"
],
"psr-4": {
"App\\": "app/"
},
"files" : [
"app/Helper/helper.php"
]
}
}
答案 0 :(得分:0)
我认为你不了解作曲家自动加载的内容。您可以使用它来包含库及其依赖项,而不是您在应用程序中创建的类。
你最好做的是在你想要使用的类中创建控制器添加时,例如:
<?php
use App\Library\Customer;
您需要将其放在每个控制器中。
答案 1 :(得分:0)
您应该从classmap组中删除它,只需添加适当的命名空间和类。您可以在此处查看所有psr-4标准:http://www.php-fig.org/psr/psr-4/
假设你有一个像这样的文件夹结构:
app
-> Library
-> Customer.php // namespace App\Library; class Customer{}
-> Model
-> User.php // namespace App\Model; class User{}
只要您使用正确的命名空间和类名,所有文件都应自动加载。
顺便说一句,您应该使用Auth外观:https://laravel.com/docs/5.4/authentication
答案 2 :(得分:0)
由于psr-4
已经use
自动加载,因此无需<?php
use App\Library\Customer;
。你了解它是如何工作的。那么您只需使用FOO = {
common : {
init : function(){ ... },
finalize : function(){ ... }
},
shopping : {
init : function(){ ... },
cart : function(){ ... },
category : function(){ ... }
}
}
FOO.common.init();
FOO.shopping.init();
关键字导入您的课程,就像这样
{{1}}
有关详细信息,请参阅block-level element并获取此PSR-4: Autoloader