Laravel — пользовательские классы не работают

Я читал несколько уроков по созданию пользовательских классов для Laravel. Я следовал инструкциям и сделал именно то, что говорят учебники:

  1. Создана новая папка laravel / app / library / graphics /

  2. Отредактировал laravel / app / start / global.php, где я добавил:

    app_path().'/libraries/graphics',
    
  3. Создан новый файл в laravel / app / library / graphics / с именем Image.php с этим кодом:

    <?php  namespace graphics/Image;
    
    class Image {
    
    public static function hello() {
    
    return 'Hello';
    
    }
    }
    
  4. Используемый composer dump-autload команда

  5. Route::get('/' , function() { return Graphics\Image::hello(); } ); возвращает ошибку:

Использование неопределенной постоянной графики — предполагается «графика»

Я также добавил "app/libraries/graphics/Image.php"строка в раздел автозагрузки composer.json, который не должен быть обязательным. Почему я получаю эту ошибку? Каждый урок показывает одну и ту же процедуру для этого, но почему это не работает?

2

Решение

Разве ваше пространство имен не должно быть graphics? Текущий файл создает graphics\Image\Image, Попробуйте удалить Image из вашего пространства имен.

<?php  namespace graphics;

class Image {

public static function hello() {

return 'Hello';

}
}
1

Другие решения

Вы пытались использовать artisan dump-autoload вместо?

Это очистит весь скомпилированный код Laravel.

Посмотреть здесь: Каковы различия между "php artisan dump-autoload" а также "композитор дамп-автозагрузка"

0

Вам не нужно путать для себя. Я решил проблему в Laravel 5. Вам не нужно добавлять строку «app / library / graphics / Image.php» в раздел автозагрузки composer.json, потому что По умолчанию каталог приложения находится в пространстве имен под приложением и автоматически загружается Composer с использованием стандарта автозагрузки PSR-4.

<?php
namespace App\libraries\graphics;
class Image {
public static function hello() {
return 'Hello';
}
}

и теперь используйте ваш класс изображения из вашего маршрута.

Route::get('graphics',function(){
echo \App\libraries\graphics\Image::hello();
});
0