API Reference

Complete class and method reference for WPZylos Requirements.

Contracts

RequirementInterface

namespace WPZylos\Framework\Requirements\Contracts;

interface RequirementInterface
{
    /**
     * Check if the requirement is satisfied.
     *
     * @return bool True if satisfied, false otherwise.
     */
    public function isSatisfied(): bool;

    /**
     * Get the human-readable error message.
     *
     * @return string Error message for display.
     */
    public function getErrorMessage(): string;

    /**
     * Get a unique identifier for this requirement.
     *
     * @return string Unique name (e.g., 'php_version', 'plugin_woocommerce').
     */
    public function getName(): string;
}

RequirementsCheckerInterface

namespace WPZylos\Framework\Requirements\Contracts;

interface RequirementsCheckerInterface
{
    public function addRequirement(RequirementInterface $requirement): static;
    public function check(): bool;
    public function getFailedRequirements(): array;
    public function getErrors(): array;
    public function hasFailures(): bool;
}

Core Classes

RequirementsChecker

The main class for collecting and validating requirements.

use WPZylos\Framework\Requirements\RequirementsChecker;

$checker = new RequirementsChecker();

Methods

MethodReturnsDescription
addRequirement($req)staticAdd a requirement (fluent)
check()boolRun all checks, returns false if any fail
hasFailures()boolWhether any requirements failed
getErrors()array<string>Get all error messages
getFailedRequirements()array<RequirementInterface>Get failed requirement objects
getRequirements()array<RequirementInterface>Get all registered requirements
clear()staticRemove all requirements and reset state

RequirementsConfig

Factory class for building checkers from config.

use WPZylos\Framework\Requirements\RequirementsConfig;

Static Methods

MethodReturnsDescription
fromFile(string $path, string $textDomain = 'wpzylos')RequirementsCheckerInterfaceBuild from PHP config file
fromArray(array $config, string $textDomain = 'wpzylos')RequirementsCheckerInterfaceBuild from array

Example

// From file
$checker = RequirementsConfig::fromFile(__DIR__ . '/config/requirements.php', 'my-plugin');

// From array
$checker = RequirementsConfig::fromArray([
    'min_php_version' => '8.1',
    'min_wp_version'  => '6.0',
], 'my-plugin');

RequirementsErrorHandler

Handles displaying errors and deactivating plugin.

use WPZylos\Framework\Requirements\RequirementsErrorHandler;

$handler = new RequirementsErrorHandler(
    array $errors,
    ?string $pluginFile = null,
    string $pluginName = 'Plugin',
    string $textDomain = 'wpzylos'
);

Methods

MethodReturnsDescription
handle(bool $deactivate = true)voidProcess errors (deactivate + notices)
renderAdminNotice()voidOutput admin notice HTML
renderErrorPage()stringGet styled error page HTML
getErrors()array<string>Get error messages

RequirementsServiceProvider

Service provider for WPZylos application integration.

use WPZylos\Framework\Requirements\RequirementsServiceProvider;

$app->register(RequirementsServiceProvider::class);

Static Methods

MethodReturnsDescription
getStubPath()stringPath to requirements.php.stub
publishConfig(string $targetPath, bool $force = false)boolCopy stub to target location
publishes()arrayGet source => target for publishing

Requirement Classes

PhpVersionRequirement

use WPZylos\Framework\Requirements\Requirements\PhpVersionRequirement;

new PhpVersionRequirement(
    string $minVersion,               // e.g., '8.1'
    string $textDomain = 'wpzylos'
);

WordPressVersionRequirement

use WPZylos\Framework\Requirements\Requirements\WordPressVersionRequirement;

new WordPressVersionRequirement(
    string $minVersion,               // e.g., '6.0'
    string $textDomain = 'wpzylos'
);

PhpExtensionRequirement

use WPZylos\Framework\Requirements\Requirements\PhpExtensionRequirement;

new PhpExtensionRequirement(
    string $extension,                // e.g., 'mbstring'
    string $textDomain = 'wpzylos'
);

PluginRequirement

use WPZylos\Framework\Requirements\Requirements\PluginRequirement;

new PluginRequirement(
    string $pluginName,               // 'WooCommerce'
    string $pluginSlug,               // 'woocommerce/woocommerce.php'
    ?string $minVersion = null,       // '8.0.0' or null
    string $textDomain = 'wpzylos'
);

MultisiteRequirement

use WPZylos\Framework\Requirements\Requirements\MultisiteRequirement;

new MultisiteRequirement(
    bool $isCompatible,               // true = works on multisite
    string $textDomain = 'wpzylos'
);

Container Bindings

When using the service provider:

BindingTypeDescription
requirements.checkerRequirementsCheckerSingleton checker instance
// Access in your code
$checker = $app->make('requirements.checker');