PHP 标准库与扩展详解

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=1

6. 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          # 依赖注入容器
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇