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();

results matching ""

    No results matching ""