Я только начинаю работать с Laravel, хочу создать пользовательский класс и хочу назвать этот класс на каждом контроллере. Для этого я создаю класс Customer
в папке app/Library/
.
Когда я попытался автозагрузить эту библиотеку через композитор, json дал ошибку:
Не удалось выполнить проверку для классов внутри "App/Library/Customer", который не является файлом или папкой.
Как мы можем использовать класс autoload в контроллерах?
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"
]
}
}
Я думаю, вы не понимаете, что такое автозагрузка композитора. Вы используете это для включения библиотек и их зависимостей, а не для классов, созданных в вашем приложении.
Что вам лучше делать, когда вы создаете контроллер, добавляете в класс, который хотите использовать, например:
<?php
use App\Library\Customer;
Вам нужно будет поместить это в каждый контроллер.
Нет необходимости в classmap
поскольку уже выполняется автозагрузка psr-4
. Вы должны понять, как это работает. то вы можете просто импортировать свои классы, используя ключевое слово use
, например
<?php
use App\Library\Customer;
Для получения дополнительной информации прочтите PSR-4: Автозагрузчик и возьмите этот учебник
Вы должны удалить его из группы 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