godsdev / tools
PHP的辅助函数
v0.3.8
2021-04-11 09:32 UTC
Requires
- php: ^5.6 || ^7.0
Requires (Dev)
- phpunit/phpunit: ^4|^5
This package is auto-updated.
Last update: 2024-09-14 16:13:42 UTC
README
一个包含实用通用函数(方法)的类。这些方法是静态的。一些用于HTML输出的方法采用了Bootstrap库中使用的类。
部署
安装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编码的)与每种消息类型一起使用的图标。键(和消息类型)是:success
、danger
、warning
和info
。::$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到给定最大值的整数范围的正则表达式掩码