автозагрузка классов не работает при импорте из другого файла - PullRequest
0 голосов
/ 22 декабря 2018

Мой autoload.php не загружает необходимый класс, когда я импортирую его из другого файла:

Это автозагрузка класса из:

main.php:

use ElephantIO\Client;
use ElephantIO\Engine\SocketIO\Version2X;
require '/library/vendor/autoload.php';

class Main {
    __construct() {
    $this->socketIOClient = new Client(new Version2X('someWebsite'));
    }
}

Работает следующий сценарий:

require 'main.php';
$main = new Main();

Однако этот сценарий не выполняется:

require '/library/vendor/autoload.php';
require 'main.php';

class NotWorking extends Thread {
    __construct() {
        $this->main = new Main();
    }
}
$nowWorking = new NotWorking();

Output:

Fatal error: Uncaught Error: Class 'ElephantIO\Client' not found in main.php

Почему это так, и как правильно снова выполнить автозагрузку?

Спасибо за любую помощь заранее!

РЕДАКТИРОВАТЬ:

Проблема заключалась в том, что я использовал pthreads и классы, которые расширяют поток, не ведут себя нормально, когда требуется autoload.php.

1 Ответ

0 голосов
/ 22 декабря 2018

Сначала укажите требуемое.

require '/library/vendor/autoload.php';

use ElephantIO\Client;
use ElephantIO\Engine\SocketIO\Version2X;
...