如何检查是不是正在使用作曲家的自动加载器?
Posted
技术标签:
【中文标题】如何检查是不是正在使用作曲家的自动加载器?【英文标题】:How to check if composer's autoloader is being used?如何检查是否正在使用作曲家的自动加载器? 【发布时间】:2017-08-18 01:29:49 【问题描述】:我正在为 WordPress 开发一个特定的 php 框架,我想让我的用户选择使用 composer 将其安装为一个包,或者手动安装它。如果使用了 composer,那么 psr-4
类自动加载器会处理所有事情。如果不是,则必须在框架的引导过程中手动加载所有文件。
有没有一种安全的方法来检查 composer 的自动加载器是否正在给定的 WordPress 环境中使用?
目前我正在使用:
if( !class_exists('Composer\\Autoload\\ClassLoader') )
// Manually include files if composer is not used.
require_once 'some/files.php';
但是,如果在给定的 WordPress 环境中有一个在内部使用 composer 的插件,那么上面的 if 语句将返回 true
,即使其他插件无法访问它。
【问题讨论】:
“全局”作曲家自动加载器位置是否在可重复的位置? @RobertDeBoer 不,不是。它可以同时存在于多个位置。 【参考方案1】:事实证明,解决方案非常简单。您需要创建 2 个不同的引导文件,例如 manual-bootstrap.php
和 composer-bootstrap.php
。然后将以下行添加到composer.json
:
"autoload":
"files": ["composer-bootstrap.php"]
composer-bootstrap.php
只有在使用 composer 将框架加载为依赖项时才会被调用。想要手动加载框架的用户将使用manual-bootstrap.php
。
【讨论】:
【参考方案2】:if(class_exists("\Composer\Autoload\ClassLoader"))
// a composer autoload.php has already been included/required
【讨论】:
以上是关于如何检查是不是正在使用作曲家的自动加载器?的主要内容,如果未能解决你的问题,请参考以下文章