从另一个文件导入时,类自动加载不起作用

时间:2018-12-22 00:21:27

标签: php namespaces composer-php autoload

当我从另一个文件导入它时,我的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

为什么会这样,又有什么方法可以再次正确自动加载?

感谢您的任何帮助!

编辑:

问题是我使用pthread和扩展线程的类在需要autoload.php时无法正常工作。

1 个答案:

答案 0 :(得分:0)

首先放置需求。

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

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