почему php5 может найти мой класс, а php7 нет?

У меня есть приложение на основе Laravel 5.2, использующее php 5.6, и я решил, что было бы здорово перевести мое приложение на php7 (в основном для повышения производительности). Кажется, все работает отлично, за исключением того, что php7 не может найти один конкретный класс в моем приложении.

Файл хранится в файле app/Libraries/Main/Google/Auth/Auth.php, он имеет пространство имен Google и имя класса GoogleAuth, поэтому каждый раз, когда я хочу его использовать, я просто добавляю — используйте Google/GoogleAuth; вверху файла. В php5 это прекрасно работает, но в php7 не может найти класс. В чем тут может быть дело?


person ar4ix8    schedule 06.12.2016    source источник


Ответы (1)


Я думаю, остался один шаг, запустите команду composer dump-autoload и php artisan clear-compiled . Может эта команда решит эту проблему.

ОБНОВЛЕНИЕ

"autoload": {
    "classmap": [
        "database", 
        "app/Libraries/Main"
    ],
    "psr-4": {
        "App\\": "app/"
    }
}

После обновления вашего composer.json с помощью приведенного выше кода выполните следующую команду:

//To clears all compiled files.
php artisan clear-compiled 

//To updates the autoload_psr4.php
composer dump-autoload

//updates the autoload_classmap.php
php artisan optimize
person AddWeb Solution Pvt Ltd    schedule 06.12.2016
comment
он просто выдает - класс "Google\GoogleAuth" не найден - person ar4ix8; 06.12.2016
comment
Нужен массив автозагрузки из composer.json - person AddWeb Solution Pvt Ltd; 06.12.2016
comment
автозагрузка: { classmap: [база данных, приложение/библиотеки/главная], psr-4: {приложение\\: приложение/}}, - person ar4ix8; 06.12.2016
comment
тоже не сработало, и это убило все приложение, даже сообщение об ошибке не появилось. у меня есть несколько классов в папке библиотек, которые используют пространства имен, не связанные с расположением файла, и они работают, только если приложение/библиотеки/основное добавлено в карту классов - person ar4ix8; 06.12.2016