Автозагрузка классов + composer + cli mode

165
23 февраля 2019, 11:30

Есть такой простой автозагрузчик:

<?php
function classes($class)
{
    $app = dirname(__DIR__);
    try {
        if (!@include_once $app . "/" . str_replace("\\", "/", $class) . ".php") {
            throw new Exception("Файл не найден!");
        }
    } catch (Exception $e) {
        if (php_sapi_name() != "cli")
            die("Ошибка подключения класса {$class} " . $e->getMessage());
        else
            echo "Ошибка загрузки класса стандартным загрузчиком";
    }
}

    require_once dirname(__DIR__) . '/vendor/autoload.php';
spl_autoload_register('classes');
?>

При работе в штатном режиме все ок. Классы подтягивает.
Но при запуска с консоли имею ряд проблем которых иметь не хочется, так как работаю с websocket (с Workerman).

include_once(/var/www/www-root/data/www/site.com/React/EventLoop/LoopInterface.php): failed to open stream:
No such file or directory in file 
/var/www/www-root/data/www/site.com/system/Class.php on line 7

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

Answer 1

проверьте с начала есть ли файл под загружайте + зачем autoload composer-a в регистр кидать + ну и если он не загрузит значит ваш найдет. И не надо в autoload'е что то выкидывать класс может быть подгружен и в ручную

<?php
require_once $app . '/vendor/autoload.php';
function classes($class)
{
    $app = dirname(__DIR__);
    $file = $app . "/" . str_replace("\\", "/", $class) . ".php";
    if (file_exists($file) {
      require_once $file;
    } 
};
spl_autoload_register('classes');
?>
READ ALSO
С OpenServer почта отправляется, а на хостинге при отправке почты выдается ошибка Mailer Error: SMTP connect() failed. Как исправить?

С OpenServer почта отправляется, а на хостинге при отправке почты выдается ошибка Mailer Error: SMTP connect() failed. Как исправить?

С OpenServer почта отправляется, а на хостинге при отправке почты выдается ошибка Mailer Error: SMTP connect() failedКак мне исправить эту ошибку? Для отправки...

202
Работа с аргументами функции в с++ [закрыт]

Работа с аргументами функции в с++ [закрыт]

функция write_stats, которая принимает два аргумента - набор данных и выводной поток, и до выводного потока записывает 3 статические данные о данных:...

156
Как посмотреть какие команды выполняет mingw?

Как посмотреть какие команды выполняет mingw?

Насколько я понял, когда я набираю gcc, запускается драйвер, вызывающий другие программы (препроцессор, компилятор, линковщик)Как посмотреть...

163
Разделить вывод в std::cout

Разделить вывод в std::cout

Написал функцию для вывода произвольного количества аргументовКак передать в неё разделитель (пробел, например) так, чтобы вывод осуществлялся...

161