我正在为 WordPress 开发一个特定的 PHP 框架,我想让我的用户选择使用 composer 将它作为一个包安装,或者手动安装。如果使用 composer,则 psr-4
类自动加载器会处理所有事情。如果不是,则必须在框架的引导过程中手动加载所有文件。
有没有一种安全的方法来检查在给定的 WordPress 环境中是否正在使用 composer 的自动加载器?
目前我正在使用:
if( !class_exists('Composer\\Autoload\\ClassLoader') )
{
// Manually include files if composer is not used.
require_once 'some/files.php';
}
但是,如果在给定的 WordPress 环境中有一个内部使用 composer 的插件,那么上面的 if 语句将返回 true
,即使其他插件无法访问它也是如此。
最佳答案
事实证明,解决方案非常简单。您需要创建 2 个不同的引导文件,比如 manual-bootstrap.php
和 composer-bootstrap.php
。然后将以下行添加到 composer.json
:
"autoload": {
"files": ["composer-bootstrap.php"]
}
composer-bootstrap.php
只有在使用 composer 将框架作为依赖项加载时才会被调用。想要手动加载框架的用户将使用 manual-bootstrap.php
代替。
关于php - 如何检查是否正在使用 Composer 的自动加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43010859/