godsdev/tools

PHP的辅助函数

v0.3.8 2021-04-11 09:32 UTC

README

一个包含实用通用函数(方法)的类。这些方法是静态的。一些用于HTML输出的方法采用了Bootstrap库中使用的类。

Total Downloads Latest Stable Version Lint Code Base PHP Composer + PHPUnit

部署

安装Composer后,在项目根目录中执行以下命令以安装此库

composer require godsdev/tools:^0.3.8

然后,确保composer.json文件包含当前类的版本 - 类似于

{
    "require": {
        "godsdev/tools": "^0.3.8"
    }
}

然后请确保包含自动加载器

require_once '/path/to/your-project/vendor/autoload.php';

最后,将以下行

use GodsDev\Tools\Tools;

添加到您希望使用Tools方法的位置的file中。然后您可以使用以下方式调用其所有功能 - Tools::method()

兼容性

  • PHP 5.6+, 7+
  • 一些字符串处理函数调用需要ext-mbstring扩展的mb_XXXX函数
  • relativeTime()创建new DateTime()
  • stripAttributes()使用libxml并创建new DOMDocument()new DOMXPath()
  • str_putcsv()打开"php://memory"
  • curlCall()使用cURL扩展
  • webalize()检查ext-iconv扩展和iconv()函数

备注

  • 处理消息的方法使用会话($_SESSION["messages"]变量)来存储消息。
  • escapeSQL()已过时,不应使用
  • escapeIn()escapeDbIdentifier()是针对MySQL/MariaDb DBMS特定的。

PHP扩展

composer.json中的"require"项应该实际上是

"require": {
    "php": "^5.6 || ^7.0",
    "ext-curl": "*",
    "ext-date": "*",
    "ext-dom": "*",
    "ext-iconv": "*",
    "ext-json": "*",
    "ext-mbstring": "*",
    "ext-pcre": "*",
    "ext-session": "*",
    "ext-SimpleXML": "*"
}

但由于并非所有方法都被每个项目使用,因此那里并没有列出所有这些要求。这可能会在测试时触发一些错误信息。有关更多信息,请参阅故障排除章节。

配置

类常量

  • ::$LOCALE[]数组包含地区日期/时间格式的配置。例如,捷克语语言的示例
Tools::LOCALE['cs'] => [
    'date format' => 'j. F',
    'full date format' => 'j. F Y',
    'time format' => 'H:i:s',
    'weekdays' => [
        'Sunday' => 'neděle',
        'Monday' => 'pondělí',
        'Tuesday' => 'úterý',
        'Wednesday' => 'středa',
        'Thursday' => 'čtvrtek',
        'Friday' => 'pátek',
        'Saturday' => 'sobota'
    ],
    'months' => [
        'January' => 'leden',
        'February' => 'únor',
        'March' => 'březen',
        'April' => 'duben',
        'May' => 'květen',
        'June' => 'červen',
        'July' => 'červenec',
        'August' => 'srpen',
        'September' => 'září',
        'October' => 'říjen',
        'November' => 'listopad',
        'December' => 'prosinec'
    ],
    'time ago' => [
        'y' => ['rok', 'roky', 'let'], //enclination for "1 year" form, "2-4 years" form, and "5+ years" form
        'm' => ['měsíc', 'měsíce', 'měsíců'],
        'd' => ['den', 'dny', 'dnů'],
        'h' => ['hodina', 'hodiny', 'hodin'],
        'i' => ['minuta', 'minuty', 'minut'],
        's' => ['vteřina', 'vteřiny', 'vteřin'],
        'ago' => 'zpátky',
        'in' => 'za',
        'moment' => 'okamžik'
    ]
];
  • ::$MESSAGE_ICONS数组包含(HTML编码的)与每种消息类型一起使用的图标。键(和消息类型)是:successdangerwarninginfo
  • ::$PASSWORD_CHARS常量是一个包含用于生成密码的字符的字符串。由randomPassword()使用。

测试

测试是通过在项目文件夹vendor/phpunit/phpunit中使用phpunit实现的。测试类在test/ToolsTest.php中(按字母顺序测试那里的方法)。如果您添加了新方法,请别忘了将其测试添加到ToolsTest.php并运行

vendor/phpunit/phpunit/phpunit
  • 注意:执行HTTP重定向的redir()方法不包括在单元测试中。
  • 注意:在GitHub Actions中使用的ubuntu-latest(PHP)不支持iconv //TRANSLIT标志,因为iconv实现是未知的,因此PHPUnit组iconvtranslit被排除。

故障排除

在运行phpunit之后,您可能会收到某些PHP扩展不可用的错误消息。(有关更多信息,请参阅PHP扩展章节)。如果您的项目不需要该扩展,则不会出现此类错误消息。如果确实需要,则您需要提供启用此/这些扩展的方法。

方法

变量测试和设置

  • anyset() – 给定的变量中是否设置了任何一个?
  • equal() – 与isset()的比较
  • ifempty() – 与empty()isset()的组合
  • ifnull() – 与isnull()isset()的组合
  • nonempty() – 与!empty()isset()的组合
  • nonzero() – 与isset()的非零测试
  • set() – 对isset()的测试或将值设置到变量中
  • setarray()isset()is_array() 的快捷方式
  • setifempty() – 如果 isset()empty() 则设置
  • setifnotset() – 如果 !isset() 则设置
  • setifnull() – 如果 isset()is_null() 则设置
  • setscalar()isset()is_scalar() 的快捷方式

HTML 输出

  • dump() – 在 <pre>...</pre>var_dump() 的快捷方式
  • h() – UTF-8 中 htmlspecialchars() 的快捷方式
  • htmlInput() – 输出给定类型的 <input>
  • htmlOption() – 输出 <option>
  • htmlRadio() – 输出 <input type="radio">
  • htmlSelect() – 输出带有给定选项的 <select>
  • htmlTextarea() – 输出 <textarea>
  • htmlTextInput() – 输出 <input type="text">
  • stripAttributes() – 从 HTML 代码中移除属性

HTTP

  • curlCall() – 调用一个 URL,返回结果
  • httpResponse() – 将 HTTP 响应分为头部和主体
  • redir() – 进行 HTTP 重定向
  • urlChange() – 添加/删除/修改 URL 的 GET 变量

消息

  • addMessage() – 向会话中添加消息
  • outputMessage() – 输出消息
  • resolve() – 根据结果添加 '成功' 或 '错误' 消息
  • showMessages() – 显示会话中的消息

字符串

  • begins() – 字符串是否以给定的参数开始?
  • cutTill() – 截断字符串到给定的参数第一次出现的位置
  • ends() – 字符串是否以给定的参数结束?
  • exploded()explode() 并返回给定索引的项目
  • mb_lcfirst() – 多字节版本的首字母小写
  • mb_ucfirst() – 多字节版本的首字母大写
  • randomPassword() – 返回随机密码
  • str_after() – 返回参数出现后的字符串部分
  • str_before() – 返回参数出现前的字符串部分
  • str_delete() – 删除 byref 变量的部分
  • str_putcsv() – 与 str_getcsv() 相反

转换

  • columnName() – 将数字转换为 26 进制(字母)系统
  • escapeDbIdentifier() – MySQL/MariaDb 标识符的转义函数
  • escapeIn() – 在 SQL 的 IN() 子句中转义值
  • escapeJS() – JavaScript 的转义
  • escapeSQL() – SQL 的基本转义(已弃用)
  • shortify() – 限制长字符串的长度,并添加可选的省略号
  • webalize() – 转换为 URL 友好的字符串
  • xorCipher() – 基本加密
  • xorDecipher() – 基本解密

变量

  • among() – 给定的值是否在列出的值中
  • blacklist() – 如果在黑名单上,则设置给定的默认值
  • whitelist() – 如果不在白名单上,则设置给定的默认值

数组

  • array_search_i() – 不区分大小写的 array_search()
  • arrayConfineKeys() – 提取并返回给定数组的选择键
  • arrayKeyAsValues() – 使用键填充数组的值
  • arrayListed() – 输出数组的项目列表
  • arrayReindex() – 根据给定的索引重新索引数组中的数组
  • arrayRemoveItems() – 从数组中删除项目
  • arraySearchAssoc() – 在数组中搜索给定的键:值对(s)
  • in_array_i() – 不区分大小写的 in_array()

区域设置

  • localeDate() – 使用 ::$LOCALE[] 设置输出日期
  • localeTime() – 使用 ::$LOCALE[] 设置输出时间
  • plural() – 输出给定词的适当单数/复数形式
  • relativeTime() – 使用 ::$LOCALE[] 设置相对于 now() 的输出

特定

  • GoogleAuthenticatorCode() – GoogleAuthenticator 哈希
  • preg_max() – 返回匹配从0到给定最大值的整数范围的正则表达式掩码