fabrikage / requirements
一个辅助类,用于设置您的PHP应用程序的要求。
0.2.0
2023-12-16 13:12 UTC
README
fabrikage/requirements
一个优雅的解决方案,用于检查您的PHP应用程序是否满足在服务器上运行的必要条件。
要求
将很快添加。
使用Composer安装
composer require fabrikage/requirements
用法
有效的版本字符串包括
1
主版本1.0
主版本和次版本1.0.0
主版本、次版本和修订版本
或者任何可以被version_compare()
读取的内容。
有效的比较运算符包括
=
等于!=
不等于>
大于>=
大于或等于<
小于<=
小于或等于
默认比较运算符,如果没有提供,则是>=
。
带有比较运算符的版本字符串看起来像这样:>=1.0.0
。
示例
require_once __DIR__ . '/vendor/autoload.php'; use Fabrikage\Requirements; use Fabrikage\Requirements\Requirement; $requirements = [ new Requirement\PHP('8.1'), new Requirement\PHPExtension('curl'), new Requirement\WordPress('6.4.1'), new Requirement\WordPressPlugin('woocommerce/woocommerce.php', '8.3.1'), ]; // Pass false to the constructor to disable exception throwing, leave empty to enable. $validator = new Requirements\Validator(false); $validator->addRequirements($requirements); if (!$validator->valid()) { // Your application does not meet the requirements. } // Alternatively, you can invoke the validator as a function. if (!$validator()) { // Your application does not meet the requirements. } App::run();
WordPress示例
use Fabrikage\Requirements\Validator; class App { private static Validator $validator; public static function run(Validator $validator): void { if (!$validator->valid()) { static::$validator = $validator; static::handleErrors(); return; // Block further execution } static::init(); } private static function init(): void { // Initialize your application } private static function handleErrors(): void { add_action('admin_notices', function () { static::renderErrors(); }); } private static function renderErrors(): void { if (empty($errors = static::$validator->getErrors())) { return; } echo sprintf( '<div class="notice notice-error"><p><strong>%s</strong></p><p>%s</p><ul>%s</ul></div></p>', PLUGIN_NAME, __('The plugin could not be loaded because the following requirements are not met:', 'plugin-name'), implode('', array_map(function (string $error) { return sprintf('<li>- %s</li>', $error); }, $errors)) ); } }
如果未满足所有要求,这将产生以下输出