如何检查是否正在使用composer的自动加载器?

时间:2017-03-24 23:43:24

标签: php wordpress composer-php

我正在为WordPress开发一个特定的PHP框架,我想让我的用户选择使用composer将其作为一个包安装,或者手动安装它。如果使用了composer,那么psr-4类自动加载器会处理所有内容。如果没有,则必须在框架的引导过程中手动加载所有文件。

有没有一种安全的方法来检查作曲家的自动加载器是否在给定的WordPress环境中使用?

目前我正在使用:

if( !class_exists('Composer\\Autoload\\ClassLoader') )
{
    // Manually include files if composer is not used.
    require_once 'some/files.php';
}

但是,如果在给定的WordPress环境中有一个内部使用composer的插件,那么上面的if语句将返回true,即使其他插件无法访问它。

2 个答案:

答案 0 :(得分:1)

事实证明,解决方案非常简单。您需要创建2个不同的引导文件,例如manual-bootstrap.phpcomposer-bootstrap.php。然后将以下行添加到composer.json

"autoload": {
    "files": ["composer-bootstrap.php"]
}
只有在使用composer将框架作为依赖项加载时,才会调用

composer-bootstrap.php。想要手动加载框架的用户将改为使用manual-bootstrap.php

答案 1 :(得分:1)

if(class_exists("\Composer\Autoload\ClassLoader"))
{
  // a composer autoload.php has already been included/required
}