spaceboy/config-slalom

使服务器依赖的配置滑翔变得简单易读。

dev-master 2019-08-11 17:20 UTC

This package is auto-updated.

Last update: 2024-09-12 05:08:03 UTC


README

在PHP中轻松进行配置魔法!

安装

对于PHP 5.3或更高版本,使用composer

composer require spaceboy/config-slalom

对于较低版本,复制PHP52目录并需要autoload.php文件

<?php
...
require_once('PHP52/autoload.php');
...

示例

use Spaceboy\ConfigSlalom\Slalom;

$configurator = Slalom::start(new Configurator)
    ->when()
        ->serverNameIs('localhost')
        ->andContinue()
    ->when()
        ->serverNameIsIn(['localhost', 'production-server.com'])
        ->execute(function ($configurator) {
            // do something
        })
        ->andContinue()
    ->when()
        ->requestUriStarts('/img/')
        ->execute(function ($configurator) {
            $configurator->handleImages();
        })
    ->when()
        ->requestUriIs('/upload')
        ->methodIs('POST')
        ->skip(file_exists('uploaded.file'))
        ->execute(function ($configurator) {
            // do something
        })
    ->otherwise()
        ->throwException(new \Exception('Wrong server host.'))
    ->finally()
        ->execute(
            function ($configurator) {
                // do something
            }
        )
    ->run();

公共方法

  • start([mixed $configurator]): Slalom

    第一指令。

    启动整个"滑翔"。

  • when([bool $apply = TRUE]): Slalom

    指令。

    启动一个选项。

    每次您想用新的条件集启动新选项时,请使用它。

    $applyTRUE(或未设置)时,新选项开始。否则,忽略整个when子句。

操作

  • throwException(throwable $throwable): Slalom

    提供操作。

    抛出$throwable

  • execute(callable $callable[, mixed $args]): Slalom

    提供操作。

    执行$callable(自定义操作),可能带有$args。传递给$callable的第一个参数始终是$configurator

  • define(string $name, mixed $value): Slalom

  • defineNow(string $name, mixed $value): Slalom

条件

  • serverNameIs(string $serverName): Slalom

    添加条件。

    如果当前服务器名($_SERVER['SERVER_NAME'])等于$serverName,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • serverNameIsNot(string $serverName): Slalom

    添加条件。

    如果当前服务器名($_SERVER['SERVER_NAME'])不等于$serverName,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • serverNameIsIn(array $serverNameArray): Slalom

    添加条件。

    如果当前服务器名($_SERVER['SERVER_NAME'])在$serverNameArray中,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • serverNameNotIn(array $serverNameArray): Slalom

    添加条件。

    如果当前服务器名($_SERVER['SERVER_NAME'])不在$serverNameArray中,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • serverNameMatches(string $serverNamePattern): Slalom

    添加条件。

    如果当前服务器名($_SERVER['SERVER_NAME'])匹配$serverNamePattern,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • serverNameNotMatches(string $serverNamePattern): Slalom

    添加条件。

    如果当前服务器名($_SERVER['SERVER_NAME'])不匹配$serverNamePattern,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • requestUriIs(string $requestUri): Slalom

    添加条件。

    如果当前请求URI($_SERVER['REQUEST_URI'])等于$requestUri,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • requestUriStarts(string $requestUri): Slalom

    添加条件。

    如果当前请求URI($_SERVER['REQUEST_URI'])以$requestUri开头,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • requestUriContains(string $requestUri): Slalom

    添加条件。

    如果当前请求URI($_SERVER['REQUEST_URI'])包含$requestUri,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • requestUriNotContains(string $requestUri): Slalom

    添加条件。

    如果当前请求URI($_SERVER['REQUEST_URI'])不包含$requestUri,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • requestMethodIs(string $requestMethod): Slalom

    添加条件。

    如果当前请求方法($_SERVER['REQUEST_METHOD'])等于$requestMethod,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • requestMethodIsNot(string $requestMethod): Slalom

    添加条件。

    如果当前请求方法($_SERVER['REQUEST_METHOD'])不等于$requestMethod,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • requestMethodIsIn(array $requestMethodArray): Slalom

    添加条件。

    如果当前请求方法($_SERVER['REQUEST_METHOD'])在$requestMethodArray中,则继续。如果不在,则继续到下一个意见(下一个whenotherwisefinally)。

  • requestMethodNotIn(array $requestMethodArray): Slalom

    添加条件。

    如果当前请求方法($_SERVER['REQUEST_METHOD'])不在$requestMethodArray中,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • isTrue(callable $callable): Slalom

    添加条件。

    如果$callable的结果是布尔值true,则继续。如果不是,则继续到下一个意见(下一个whenotherwisefinally)。

    $callable期望1个参数:$configurator

  • portIs(string $port): Slalom

    添加条件。

    如果当前端口($_SERVER['SERVER_PORT'])等于$port,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • portIsNot(string $port): Slalom

    添加条件。

    如果当前端口($_SERVER['SERVER_PORT'])不等于$port,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • portIsIn(array $portArray): Slalom

    添加条件。

    如果当前端口($_SERVER['SERVER_PORT'])在$portArray中,则继续。如果不在这个数组中,则继续到下一个意见(下一个whenotherwisefinally)。

  • portIsNotIn(array $portArray): Slalom

    添加条件。

    如果当前端口($_SERVER['SERVER_PORT'])不在这个数组中,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • protocolIs(string $protocol): Slalom

    添加条件。

    如果当前协议($_SERVER['SERVER_PORT'])等于$protocol,则继续。如果不等于,则继续到下一个意见(下一个whenotherwisefinally)。

  • protocolIsNot(string $protocol): Slalom

    添加条件。

    如果当前协议($_SERVER['SERVER_PORT'])不等于$protocol,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • protocolIsIn(array $protocolArray): Slalom

    添加条件。

    如果当前协议($_SERVER['SERVER_PORT'])在$protocolArray中,则继续。如果不在这个数组中,则继续到下一个意见(下一个whenotherwisefinally)。

  • protocolIsNotIn(array $protocolArray): Slalom

    添加条件。

    如果当前协议($_SERVER['SERVER_PORT'])不在这个数组中,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • phpVersionIs(integer $phpVersion): Slalom

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)等于$phpVersion,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,采用PHP_VERSION_ID常量格式(例如,PHP 5.2.7为50207)。

  • phpVersionIsNot(integer $phpVersion): Slalom

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)不等于$phpVersion,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,采用PHP_VERSION_ID常量格式(例如,PHP 5.2.7为50207)。

  • phpVersionIsIn(integer[] $phpVersions): Slalom

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)在$phpVersions中,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,采用PHP_VERSION_ID常量格式(例如,PHP 5.2.7为50207)。

  • phpVersionNotIn(integer[] $phpVersions): Slalom

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)不在这个数组中,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,采用PHP_VERSION_ID常量格式(例如,PHP 5.2.7为50207)。

  • phpVersionLT(integer $phpVersion): 滑浪

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)小于$phpVersion,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,格式为PHP_VERSION_ID常量(例如,50207表示PHP 5.2.7)。

  • phpVersionLE(integer $phpVersion): 滑浪

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)小于或等于$phpVersion,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,格式为PHP_VERSION_ID常量(例如,50207表示PHP 5.2.7)。

  • phpVersionEQ(integer $phpVersion): 滑浪

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)等于$phpVersion,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,格式为PHP_VERSION_ID常量(例如,50207表示PHP 5.2.7)。

  • phpVersionNE(integer $phpVersion): 滑浪

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)不等于$phpVersion,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,格式为PHP_VERSION_ID常量(例如,50207表示PHP 5.2.7)。

  • phpVersionGE(integer $phpVersion): 滑浪

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)大于或等于$phpVersion,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,格式为PHP_VERSION_ID常量(例如,50207表示PHP 5.2.7)。

  • phpVersionGT(integer $phpVersion): 滑浪

    添加条件。

    如果当前PHP版本(PHP_VERSION_ID)大于$phpVersion,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。参数$phpVersion是整数,格式为PHP_VERSION_ID常量(例如,50207表示PHP 5.2.7)。

  • phpSapiIs(string $sapi): 滑浪

    添加条件。

    如果当前PHP构建的服务器API(PHP_SAPI)等于$sapi,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • phpSapiIsNot(string $sapi): 滑浪

    添加条件。

    如果当前PHP构建的服务器API(PHP_SAPI)不等于$sapi,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • phpSapiIsIn(string[] $sapi): 滑浪

    添加条件。

    如果当前PHP构建的服务器API(PHP_SAPI)在$sapi中,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • phpSapiIsNotIn(string[] $sapi): 滑浪

    添加条件。

    如果当前PHP构建的服务器API(PHP_SAPI)不在$sapi中,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileExists(string $fileName): 滑浪

    添加条件。

    如果文件$fileName存在,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileNotExists(string $fileName): 滑浪

    添加条件。

    如果文件$fileName不存在,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsReadable(string $fileName): 滑浪

    添加条件。

    如果文件$fileName可读,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsNotReadable(string $fileName): 滑浪

    添加条件。

    如果文件$fileName不可读,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsFile(string $fileName): 滑浪

    添加条件。

    如果文件$fileName是文件,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsNotFile(string $fileName): 滑浪

    添加条件。

    如果文件$fileName不是文件,则继续。否则,继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsDir(string $fileName): 滑浪

    添加条件。

    如果文件$fileName是目录,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsNotDir(string $fileName): Slalom

    添加条件。

    如果文件$fileName不是目录,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsLink(string $fileName): Slalom

    添加条件。

    如果文件$fileName是链接,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

  • fileIsNotLink(string $fileName): Slalom

    添加条件。

    如果文件$fileName不是链接,则继续。否则继续到下一个意见(下一个whenotherwisefinally)。

指令

  • andContinue(): Slalom

    指令。

    在指令执行后继续。

  • onExceptionContinue([bool $continue = TRUE]): Slalom

    指令。

    当抛出异常时,Slalom运行继续。

    不会覆盖onException

    当设置为TRUE时,由throwException抛出的异常也会被忽略。

  • onException(callable $callback): Slalom

    指令。

    当抛出异常时,执行$callback

    当设置时,自动将onExceptionContinue设置为FALSE

    $callback执行时带有两个参数

    • Exception $exception:抛出的异常
    • mixed $configurator$configurator

    当设置时,即使由throwException指令抛出异常也会运行。

  • otherwise(): Slalom

    指令。

    定义当没有其他动作符合条件时将执行的动作。

  • skip([bool $skip = TRUE]): Slalom

    指令。

    $skipTRUE(或未设置)时,跳过此子句并继续。

  • run(): mixed

    最后一个指令。

    执行整个"slalom";如果没有此方法,则什么都不做。

    返回start()方法中传入的$configurator

可能的冲突

对于版本低于"5.2.7-extra"的PHP,定义了常量PHP_VERSION_ID。因此,如果您在包含ConfigSlalom之后定义常量PHP_VERSION_ID,则可能会遇到冲突。