px普贤教程PuXian
普贤教程 › 生态包

实用函数包

这 60 个包补的是语言标准库层面的日常函数:文本处理、校验与安全、数据结构与并发、协议与归档、数据库与解析。它们大多对应 PHP 的内置函数与扩展,从 PHP 迁过来的代码能直接找到替代。本站这 6 页给的是实际用法:每一段输出都是在 0.2.382 上跑出来的原文,跑不通或会坑人的地方都标出来了。

先说结论这 60 个包里 14 个已到 0.2.0,装包时写 @0.2.0 或 @^0.2.0。会踩的边界集中在返回值形态上(uu_decode 返 bytes、dp_format 返 list、dbal 用 db_* 前缀),速查见 包使用边界。

这页讲什么

生态包原本偏重「服务端基础设施」——数据库、HTTP、缓存、编解码。这一批补的是另一半:日常写业务代码时反复需要的那些函数。装法、import 写法与其它包没有区别,难点在「名字对得上、行为不一定对得上」,所以下面每个结论都配了可重跑的脚本。

这些包共 61 个 .px 文件、9,837 行;其中 14 个已到 0.2.0。参考页「可用版本」一行写明了每个包有哪几版,装之前对一下。每个包的函数清单在 生态包总览 里按分类查。

安装与验证

装包必须写版本范围(裸名 pxpkg add arrutil 会直接报错):@0.2.0 是精确版本,@^0.2.0 在同一大版本内取最新。semver 是 node-semver 语义:主版本为 0 时次版本号就是 breaking 边界,^0.1.0 的上界是 0.2.0(开区间)。

bash
pxpkg init                    # 项目根目录,产生 px.toml 与 .px_modules/
pxpkg add arrutil@0.1.0       # 只有 0.1.0 的包写精确版本
pxpkg add aescbc@0.2.0        # 已到 0.2.0 的包写 0.2.0
pxpkg install                 # 装到 .px_modules/<pkg>/<pkg>.px,写 px.pkg.lock
pxpkg list                    # 核对装了什么
px
import arrutil                # 裸名:从 .px_modules/ 命中

装完必须验一次「能不能 import」,而不是只看 pxpkg install 的返回码:装成功 ≠ 能加载。包内若有跨目录的相对 import,装进 .px_modules/ 后路径会断,严格模块模式直接报 E3005;这条检查对任何包都成立。

bash
# 最小冒烟:每个包装完都导一次
px run --fast smoke.px
--fast 从 0.2.379 起已经能解析 import 了这正是它成为装包冒烟最佳工具的原因:编译失败会明确报 E3005 找不到模块并不回落解释轨;而纯解释轨对同样的错写法只打一行警告、照常跑下去(工具链 有对拍)。

按用途分类

分类包数包
文本与格式化13arrutil · compact · ctype · multisort · numconv · phonetic · simtext · sprintf · strpad · textfmt · vardump · cldr · gettext
数据格式与编解码12jsonschema · mimebuilder · phpser · phar · uuencode · rssbuilder · vcard · domlite · xmlstream · xpath · soap · xmlrpc
并发与通用模式6outbuf · errorhandler · channel · promise · eventloop · connpool
认证与安全5aescbc · descrypt · hashutil · csrf · htmlsanitizer
网络与协议5ldap · snmp · ntp · whois · memcached
数据库4dbal · querybuilder · orm · migration
数学与统计4mathx · currency · finance · geo
数据结构3advstruct · splstruct · deepmerge
Web 与 HTTP2session · scraper
时间与日历2dateperiod · strtotime
图形与媒体2colorutil · exif
可观测与测试1snapshot
文件系统1fileinfo

PHP 函数 → 普贤包

这些包大多对应 PHP 的内置函数与扩展,迁移时可以直接照这张表找。左边是旧代码里用的函数,右边是替代包;没列到的,去 生态包总览 按分类找。

PHP普贤包备注
array_flip / array_column / array_chunkarrutil函数名 arr_*,键统一转字符串
compact / extractcompactcp_compact / cp_extract
ctype_digit / ctype_alpha …ctype另有单字符版 ct_is_*
array_multisortmultisort用 ms_sort_by(rows, keys, orders) 更省事
base_convert / decbin / dechexnumconv支持到 64 进制 + 罗马数字
soundex / metaphonephonetic另含 NYSIIS
similar_text / levenshteinsimtextst_similar 返回百分比(float)
sprintfsprintf宽度/零填充按 C 语义:%08.3f → 0003.500
str_pad / str_repeat / substrstrpadsp_pad / sp_repeat / sp_truncate
nl2br / wordwrap / quoted_printable_encodetextfmttf_*
var_dump / var_export / print_rvardumpvd_dump / vd_export / vd_print_r
number_format / setlocalecldr复数规则比数字格式完整
gettext / ngettextgettext解析 .po 文本,含 .mo 编译
$_SESSION / session_startsession纯内存状态,落盘自管
htmlspecialchars / HTMLPurifierhtmlsanitizer按结构解析属性,事件属性与危险协议整条删
json-schema 校验jsonschema支持 required / minimum / enum
ob_start / ob_get_cleanoutbuf支持嵌套层级
set_error_handlererrorhandlereh_trigger 是手动的,不接管运行时错误
mail() / PHPMailermimebuilder只构造 MIME 文本,发信仍用 smtp 包
serialize / unserializephpser不支持对象与引用
Pharphar构造/解析清单,不做真实归档文件
convert_uuencodeuuencodeuu_decode 返 bytes,要 list[int] 用 uu_decode_list
SimplePie / RSSrssbuilderRSS 2.0 与 Atom 双向
vCard / iCalendarvcard行折叠、转义都实现了
DOMDocument / SimpleXML / XPathdomlite + xpath + xmlstream三个包分工:建树 / 查询 / 流式读写
PDO / Query Builderdbal / querybuilderdbal 是 db_*、querybuilder 是 qb_*,可同文件共存
DB migrationmigration纯计划生成,执行 SQL 自己来
DatePeriod / strtotimedateperiod / strtotime日期区间与英文相对时间(+1 day / next monday)
PMT / NPV / IRRfinance单点函数与摊销表(payment = interest + principal)
货币换算currency汇率键写 "USD->CNY"(斜杠/空格/嵌套也认)
haversine / 坐标转换geo含 WGS84↔GCJ02↔BD09、GeoHash
SplDoublyLinkedList / SplFixedArraysplstructdll_* / fa_*
array_replace_recursivedeepmerge另含点分路径读写
exif_read_dataexif只解析 TIFF/EXIF 字节,不解整张图
SplFileInfofileinfo纯路径运算,不碰磁盘
file_get_contents + 正则抓页面scraper提取链接/图片/标题/meta
LDAP / SNMP / NTP / Whoisldap / snmp / ntp / whois只构造与解析协议包,收发自己来
Memcached 文本协议memcached构造与解析;长度按字节算,二进制值用 mc_build_set_bytes
color / 取色colorutilHEX/RGB/HSL/HSV 互转、对比度、混色
math 扩展(双曲/阶乘)mathxmx_*
hash / crc32 / murmurhashutil13 种校验与非加密哈希
openssl AES-CBCaescbcCBC/CTR 与 openssl 逐字节一致,加解密返 bytes
DES / RC4descryptRC4 完整可用,DES 是简化教学版

五个实战页

实测环境与口径

语言 px 0.2.382,registry 195 包(/usr/share/puxian/registry),包管理器 pxpkg 0.1.0。所有示例用 px run(解释轨)执行,与 --fast 逐字节一致;涉及字节、图片、协议包的场景标注了需要编译轨的地方。