easySwoole 不直接支持 composer, 而是自己实现了一套遵循 PSR-4 标准的自动加载机制。自动加载的实现在 Core/Autoloader.php
中。
自动加载是由 Autoloader 对象实现,该对象以单例的形式存在于整个 Server 生命周期中。当需要引入第三方包或者文件时,可以在框架初始化阶段(即 Conf/Event.php
文件中的 frameInitialize
函数)引入。
命名空间引入
当我们要引入的第三方库有自己的命名空间,那么使用 addNamespace($prefix, $base_dir)
方法进行引入。其中
$prefix
为需要引入的第三包的命名空间$base_dir
为第三包所在项目的文件夹。
例如,我们以引入 PHPWord 为例子,假设 PHPWord 包的主目录 PHPWord 在 App/Vendor/
目录中,PHPWord 的命名空间为 PhpOffice\PhpWord
, 那么只要在调用 PHPWord 相关函数之前写如编下代码:
$loader = AutoLoader::getInstance();
$loader->addNamespace('PhpOffice\PhpWord',"App/Vendor/PHPWord");
文件引入
某些第三方库,比如 Smarty 并不支持命名空间,如果要引入这些单文件的第三方库,可以使用 requireFile($filePath)
函数。
$loader = AutoLoader::getInstance();
$loader->requireFile("App/Vendor/Smarty/Smarty.class.php");
引入这些第三方库之后,使用完全限定名称的方式使用。
完全限定名称
$smarty = new \Smarty();