fabrikage/requirements

一个辅助类,用于设置您的PHP应用程序的要求。

0.2.0 2023-12-16 13:12 UTC

This package is auto-updated.

Last update: 2024-09-16 14:50:04 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))
        );
    }
}

如果未满足所有要求,这将产生以下输出

WordPress notification