使用多个自动加载器 php

2022-08-31 00:21:11

您好,我正在尝试将SILEX微框架与我自己的充满类的库一起使用,因此我被困在2个加载器中,导致加载程序无法加载类的错误。有没有办法同时使用这2个加载器而不会得到这个错误?

我使用的加载器可以在下面找到:

    <?php

/*
 * Loader
 */

function my_autoloader($className) 
{
// haal de base dir op.
  $base = dirname(__FILE__);


  // het pad ophalen
  $path = $className;

  // alle paden samenvoegen tot waar ik zijn moet en de phpfile eraan plakken.
  $file = $base . "/lib/" . $path . '.php';       

  // als file bestaat haal op anders error
  if (file_exists($file)) 
  {
      require $file;
  }
  else 
  {
      error_log('Class "' . $className . '" could not be autoloaded');
      throw new Exception('Class "' . $className . '" could not be autoloaded from: ' . $file); 
  }
}

spl_autoload_register('my_autoloader');

?>

silex 使用的加载程序位于供应商目录中(来自框架本身)

这就是我的文件树的样子:

filetree


答案 1

不要在自动加载程序功能中抛出错误。 允许php按顺序遍历所有注册的自动加载器,但是如果您在该过程的中间抛出未捕获的错误,则无法尝试下一个自动加载器。spl_autoload_register

http://php.net/spl_autoload_register


答案 2

推荐