simon-downes/spf-core

SPF(Simon的PHP框架)的轻量级核心

dev-master 2018-07-23 21:16 UTC

This package is auto-updated.

Last update: 2024-09-07 00:07:16 UTC


README

SPF(Si的PHP框架)的轻量级核心。提供错误和异常处理以及常用辅助函数。

要求

此库需要PHP 7.2或更高版本以及SPF Contracts包(simon-downes/spf-contracts)。

安装

可以通过Composer以simon-downes/spf-core的方式安装和自动加载。

或者,下载一个发布版本或克隆此存储库,并将\spf命名空间添加到自动加载器中。

许可证

SPF Core是开源软件,采用MIT许可证。有关详细信息,请参阅LICENSE.md。

快速入门

SPF Core为代码块提供基本的异常和错误处理包装,无论是命令行脚本、完整的Web应用还是简单的函数。

使用SPF运行代码与调用静态run()方法并传递一个callable参数一样简单。

use spf\SPF;

// Using a closure
SPF::run(function() {
  echo "Hello World";
});

// Using a function name
function hello() {
  echo "Hello World";
}
SPF::run('hello');

// Using an object...
class Foo {
  public static function hello() {
    echo "Hello World";
  }
  public function helloWorld() {
    echo "Hello World";
  }
  public function __invoke() {
    $this->helloWorld();
  }
}

// ...static callback
SPF::run(['Foo', 'hello']);

// ...instance callback
$o = new Foo();
SPF::run([$o, 'helloWorld']);

// ...invokable object
SPF::run($o);

错误和异常处理

SPF Core提供默认的错误和异常处理器

  • 如果错误与当前的error_reporting级别匹配,则将其转换为ErrorException并传递给异常处理器。
  • 异常由指定的异常处理器处理,如果没有指定,则使用默认的异常处理器。

您可以通过传递一个可调用的参数到相应的方法来指定自定义的异常处理器

use spf\SPF;

SPF::setExceptionHandler($callback);

调试标志

SPF提供通过以下方式访问的调试标志

use spf\SPF;

// enable/disable debug flag
SPF::setDebug(true);

// Return current setting of debug flag
SPF::isDebug();

调试标志的使用几乎完全留给客户端。框架内的唯一用途是

  • 确定是否显示详细错误页面(如果设置了调试标志)或简单的静态错误页面
  • 如果未设置调试标志,则忽略对d()dd()转储函数的调用

默认的简单静态错误页面可以被覆盖:通过传递路径和文件名到

use spf\SPF;

SPF::setErrorPage($path_to_file);

变量转储

SPF提供了一个增强的var_dump()实现,可以将详细的变量信息输出为纯文本。

use spf\SPF;

SPF:dump($var);

SPF还定义了两个用于访问变量转储功能的快捷函数

  • d() - 对每个传递的参数调用SPF::dump()
  • dd() - 与d()相同,但在转储参数后调用die()

如果未设置调试标志,则这些快捷方法不会执行任何操作。

辅助函数

SPF提供各种辅助函数,并且可以轻松添加更多。辅助函数实现为静态类方法,通过传递类名到SPF::registerHelper()方法(注册所有公共静态方法)或通过传递类和方法名到SPF::addHelperMethod()(注册单个方法)进行注册。一旦注册,辅助函数可以通过对SPF的静态方法调用进行调用。

use spf\SPF;

class MyHelper {
  public static function foo() {
    echo 'foo';
  }
  public static function bar() {
    echo 'bar';
  }
}

SPF::registerHelper('\\MyHelper');

SPF::foo();
SPF::bar();

通用辅助函数

  • isCLI() - 确定脚本是否在CLI环境中运行

数组辅助函数

  • uniqueIntegers() - 返回一个唯一的整数数组
  • isTraversable() - 确定变量是否可以使用foreach进行迭代
  • isAssoc() - 确定数组是否为关联数组
  • filterObjects() - 过滤数组到特定类的实例
  • get() - 从数组或对象中返回一个项目或不存在时返回默认值
  • getNullItems() - 过滤数组到null项
  • pluck() - 从对象的数组中提取单个字段
  • sum() - 从数组数组或对象中计算指定项的总和
  • min() - 从数组数组或对象中计算指定项的最小值
  • max() - 从数组数组或对象中计算指定项的最大值
  • implodeAssoc() - 将关联数组转换为键/值对的数组
  • makeComparer() - 创建用于排序多维数组的比较函数

日期/时间助手

  • makeTimestamp - 将值转换为时间戳
  • seconds() - 将包含一个或多个小时、分钟和秒的字符串表示形式转换为总秒数

字符串助手

  • parseURL() - 将URL解析为其组件的数组

  • randomHex() - 生成指定长度的随机十六进制字符串

  • randomString() - 生成指定长度的随机字符串

  • uncamelise() - 将驼峰式字符串转换为带下划线的小写形式

  • slugify() - 将字符串转换为适合URL的形式

  • removeAccents() - 将带重音符号的字符转换为它们的普通对应字符

  • latin1() - 将UTF-8字符串转换为Latin1(ISO-8859-1)

  • utf8() - 将Latin1(ISO-8859-1)转换为UTF-8

  • ordinal() - 返回数字的序数后缀(st, nd, rd, th)

  • sizeFormat() - 使用最大合适的单位将字节数转换为人类友好的字符串

  • xssClean() - 从字符串中删除XSS漏洞

  • stripControlChars() - 从字符串中删除控制字符

屈折助手

  • pluralise() - 确定单词的复数形式(仅限英语)
  • singularise() - 确定单词的单数形式(仅限英语)