PHP「标准库」字典:核心扩展(编译默认带)逐个速查。PHP 的 stdlib = 默认启用的扩展集合。
1. PDO – 数据库统一抽象
描述
预处理防注入;ERRMODE_EXCEPTION 前提下事务才有意义。
语法和示例
$pdo = new PDO('mysql:host=db;dbname=app;charset=utf8mb4', $u, $p, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]);
$stmt = $pdo->prepare('SELECT id,name FROM users WHERE id > :id');
$stmt->execute(['id' => 5]);
$rows = $stmt->fetchAll();
$one = $stmt->fetch();
$pdo->lastInsertId();
$pdo->beginTransaction();
try { /* ... */ $pdo->commit(); }
catch (Exception $e) { $pdo->rollBack(); throw $e; }2. SPL – 标准PHP库
描述
数据结构(SplStack/SplQueue/SplFixedArray)+ 接口 + 迭代器。
语法和示例
$stack = new SplStack(); $stack->push('a'); $stack->pop();
$fixed = new SplFixedArray(1000); // 定长省内存
$fixed[0] = 'x';
// SPL 接口:Countable/ArrayAccess/IteratorAggregate
class Bag implements Countable {
private array $items = [];
public function count(): int { return count($this->items); }
}3. mbstring – 多字节字符串
描述
中文必备;几乎每个 str_* 都有 mb_ 对应。
语法和示例
mb_strlen('中文'); // 2
mb_substr('你好世界', 1, 2); // '好世'
mb_strpos('你好', '好'); // 1
mb_str_split('中文abc', 2); // 按字符切
mb_convert_encoding($s, 'UTF-8', 'GBK');
mb_internal_encoding('UTF-8');4. curl – HTTP 客户端
描述
四步:init/setopt/exec/close;RETURNRETURNTRANSFER 必开。
语法和示例
$ch = curl_init('https://api.example.com/v1');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
$err = curl_error($ch);
curl_close($ch);5. session – 会话
描述
session_start 必须最先输出;8.x 后台逐步转向无状态 JWT,但表单场景仍是标配。
语法和示例
session_start();
$_SESSION['user_id'] = 42;
$uid = $_SESSION['user_id'] ?? null;
session_regenerate_id(true); // 登录后换 ID 防固定
unset($_SESSION['otp']);
session_destroy(); // 登出
// ini 配置:session.cookie_httponly=1 / cookie_samesite=Lax / cookie_secure=16. filter – 输入过滤
描述
filter_input 从超全局安全取值;FILTER_VALIDATE_* 校验。
语法和示例
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT,
['options' => ['default' => 1, 'min_range' => 1]]);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$ip = filter_var($candidate, FILTER_VALIDATE_IP);
$h = filter_var($raw, FILTER_SANITIZE_FULL_SPECIAL_CHARS);7. hash / password 扩展
描述
password 四件套(见内置函数篇);hash 摘要全家。
语法和示例
hash_algos(); // 支持的算法清单
hash('sha256', $data);
hash_hmac('sha256', $data, $key);
hash_file('md5', '/path');
hash_init / hash_update / hash_final; // 流式大文件8. openssl – 加密
描述
对称加解密与证书信息;随机数与签名。
语法和示例
openssl_encrypt($plain, 'aes-256-gcm', $key,
OPENSSL_RAW_DATA, $iv, $tag);
openssl_decrypt($cipher, 'aes-256-gcm', $key,
OPENSSL_RAW_DATA, $iv, $tag);
openssl_random_pseudo_bytes(16);
openssl_digest($data, 'sha256');
openssl_sign($data, $sig, $privateKey, OPENSSL_ALGO_SHA256);9. ctype – 字符类型
描述
纯 ASCII 快速判断;Unicode 用 mb_ 或正则。
语法和示例
ctype_digit('123'); // true
ctype_alpha('abc'); ctype_alnum('a1');
ctype_upper('A'); ctype_space(' ');
ctype_digit('12.3'); // false(含小数点)10. SimpleXML / DOM – XML
描述
SimpleXML 属性访问式;DOM 全功能 W3C;JSON 时代仍会碰到 RSS/SOAP。
语法和示例
$xml = simplexml_load_string($rss);
foreach ($xml->channel->item as $item) {
(string) $item->title;
$item->link['href']; // 属性
}
$doc = new DOMDocument();
$doc->loadXML($xmlString);
$doc->getElementsByTagName('item');11. mysqli – MySQL 增强
描述
比 PDO 多的:异步查询、多语句;新项目建议 PDO。
语法和示例
$db = new mysqli('host', 'user', 'pass', 'app');
$db->set_charset('utf8mb4');
$stmt = $db->prepare('SELECT id FROM users WHERE id = ?');
$stmt->bind_param('i', $id); // i/d/s/b 类型
$stmt->execute();
$result = $stmt->get_result();
$rows = $result->fetch_all(MYSQLI_ASSOC);
$db->begin_transaction();12. pcntl / posix – 进程控制
描述
CLI 多进程;fork 信号;Web 服务器 SAPI 下不可用。
语法和示例
$pid = pcntl_fork();
if ($pid === 0) { child_work(); exit(0); }
pcntl_wait($status); // 回收子进程
pcntl_signal(SIGTERM, $handler);
posix_getpid(); posix_kill($pid, SIGKILL);
// 配合队列消费者 / 定时任务13. zlib / zip – 压缩
描述
gz 系透明流式;ZipArchive 建包解包。
语法和示例
$gz = gzopen('a.gz', 'wb9');
gzwrite($gz, $data); gzclose($gz);
$zip = new ZipArchive();
$zip->open('out.zip', ZipArchive::CREATE);
$zip->addFile('a.txt'); $zip->close();14. Reflection – 反射
描述
运行时读类/方法/参数元数据;容器与 ORM 的基石。
语法和示例
$r = new ReflectionClass(Service::class);
$r->hasMethod('run');
$m = $r->getMethod('run');
$m->getParameters();
foreach ($m->getParameters() as $p) {
$p->getName(); $p->getType();
}
new ReflectionFunction('strlen');15. Composer 生态常备包
描述
框架之外的高频组件(非内置,属「事实标准库」)。
语法和示例
composer require guzzlehttp/guzzle # HTTP 客户端(比 curl 好用)
composer require monolog/monolog # 日志
composer require vlucas/phpdotenv # .env 配置
composer require ramsey/uuid # UUID
composer require carbonphp/carbon # 日期增强(或原生 DateTimeImmutable)
composer require php-di/php-di # 依赖注入容器