Что такое автозагрузка в composer.json и как мы можем использовать это в laravel?

0

Я только начинаю работать с 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"
        ]
    }
}
Теги:
composer-php
autoload

3 ответа

0

Я думаю, вы не понимаете, что такое автозагрузка композитора. Вы используете это для включения библиотек и их зависимостей, а не для классов, созданных в вашем приложении.

Что вам лучше делать, когда вы создаете контроллер, добавляете в класс, который хотите использовать, например:

<?php
use App\Library\Customer;

Вам нужно будет поместить это в каждый контроллер.

0

Нет необходимости в classmap поскольку уже выполняется автозагрузка psr-4. Вы должны понять, как это работает. то вы можете просто импортировать свои классы, используя ключевое слово use, например

<?php 

use App\Library\Customer;

Для получения дополнительной информации прочтите PSR-4: Автозагрузчик и возьмите этот учебник

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню