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

标签 php wordpress composer-php

我正在为 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.phpcomposer-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/

相关文章:

PHP7 + curl (SSL/TLS) 给出 502 Bad Gateway

php - SilverStripe:禁止的权限错误

css - Wordpress 谷歌字体后备

wordpress - 如何修复 wordpress 页面上加载的不安全图像?

php - 为什么安装composer后找不到composer.phar文件

php - 在招聘过程中要求 future 的程序员编写代码的好的示例项目是什么?

php - MYSQL仅更新一键:value inside a json array

php - 图片上传到客户表格作为背景

php - 如何在 codeigniter 中使用 composer 包?

php - 使用 composer 安装后包括 Swiftmailer 文件在内的问题