PHP编程
-
PHP 语法进阶 20|密码、随机数与加密:三条不能越过的线18 阅读 2026-11-08第一条线:密码只能"哈希",不能"加密" php <?php // ✗ 这三种都别用 $bad1 = md5$password; $bad2 = sha1$password; $bad3 = hash'sha256', $password
-
PHP 语法进阶 19|正则表达式:从能用,到不被拖死10 阅读 2026-11-08PCRE 的语法外壳 PHP 用的是 PCRE 库,写法比"纯正则"多一层定界符: php <?php preg_match'/^\d{11}$/', '13800138000'; // / 是定界符 preg_match'^/api/v1
-
PHP 语法进阶 18|JSON 与序列化:类型丢失、大整数和 `unserialize` 的风险24 阅读 2026-11-08json_encode 的四个必带选项 php <?php $data = 'name' = '张三', 'url' = 'https://a.com/x', 'tags' = ; echo json_encode$data; // {"n
-
PHP 语法进阶 17|日期与时间:时区、时间戳和那个 2038 年的问题7 阅读 2026-11-08第一件事:设时区 php <?php date_default_timezone_set"Asia/Shanghai"; 不设时区,PHP 会用 UTC 并抛一条警告(Warning: date_default_timezone_set 没
-
PHP 语法进阶 16|文件与目录:读写、路径与那些致命的路径穿越9 阅读 2026-11-08读文件:三种场景三种写法 小文件,一次读完 php <?php $content = file_get_contents"/etc/app/config.json"; if $content === false { throw new Ru
-
PHP 语法进阶 15|PDO 与数据库:预处理语句是唯一的正确写法10 阅读 2026-11-08为什么用 PDO,不用 mysqli_ 或 mysql_ mysql_(mysql_query 那一套)在 PHP 7.0 已被彻底删除。看到这类代码说明是十年以上的老项目。 mysqli 只支持 MySQL,切库时要重写。 PDO 支持十
-
PHP 语法进阶 14|Cookie 与 Session:状态是怎么被记住的8 阅读 2026-11-08HTTP 本身没有状态 浏览器每发一个请求都是独立的,服务器不知道"这个人和上一个请求是不是同一个人"。记住登录状态靠两样东西: Cookie:存在客户端的小段数据,浏览器每次自动带上。 Session:存在服务端的数据,客户端只持有一个"
-
PHP 语法进阶 13|超全局变量与表单:`$_POST` 里永远没有整数14 阅读 2026-11-08九个超全局变量 | 变量 | 内容 | | | | | $_GET | URL 查询串(?a=1&b=2) | | $_POST | 请求体为表单编码时解析出来的字段 | | $_REQUEST | 默认合并了 GET/POST/Cooki
-
PHP 语法进阶 12|生成器与迭代器:让 2GB 文件不再撑爆内存17 阅读 2026-11-08问题的样子 php <?php $lines = file"access.log"; // 一次性全读进内存 foreach $lines as $line { parse$line; } file 返回整个文件内容组成的数组。一个 2GB
-
PHP 语法进阶 11|引用、拷贝与内存:为什么你的数组"偷偷"翻倍了8 阅读 2026-11-08一切的起点:zval 和引用计数 PHP 的每个变量在底层都是一个 zval(Zend value),里面装着值、类型,以及一个引用计数(refcount)。 php <?php $a = str_repeat"x", 1000; // 一
-
PHP 基本语法 10|错误与异常:`Error`、`Exception` 和日志10 阅读 2026-11-08先说清楚 PHP 的"两套机制" PHP 有两套并行的出错机制,这是它和多数语言最不一样的地方: 1. 错误(Error 级别):E_WARNING、E_NOTICE、E_DEPRECATED 这些,默认行为是"打印一条提示然后继续执行"。
-
PHP 基本语法 09|命名空间、引入与自动加载2 阅读 2026-11-08为什么需要命名空间 没有命名空间时,全世界的 PHP 代码共享一个"全局符号表"。你写一个 Logger 类,用了某个库也定义了 Logger,就冲突了——而且报的是致命错误,且只在两个文件都被加载时才爆。 命名空间给符号加了前缀,把 Lo
-
PHP 基本语法 08|接口、Trait、抽象类、魔术方法与枚举2 阅读 2026-11-08上一篇讲的是"一个类怎么写",这一篇讲"类之间怎么组织"。 接口:定义契约 php <?php interface Repository { public function findint $id: ?array; public funct
-
PHP 基本语法 07|类与对象:从属性、构造到继承5 阅读 2026-11-08最小可用的类 php <?php class User { public string $name; private int $age = 0; public function __constructstring $name, int $a
-
PHP 基本语法 06|函数:类型声明、引用、闭包与命名参数2 阅读 2026-11-08最基本的样子 php <?php function addint $a, int $b: int { return $a + $b; } echo add1, 2; // 3 PHP 5.6 之后才有的 ...,PHP 7.0 才有的标量类
-
PHP 基本语法 05|流程控制:if、switch、match 与循环5 阅读 2026-11-08if / elseif / else php <?php $score = 85; if $score = 90 { echo "优秀"; } elseif $score = 80 { echo "良好"; } elseif $score
-
PHP 基本语法 04|数组:一个结构同时装下 list 和 map1 阅读 2026-11-08它不是"数组",是有序哈希表 PHP 的数组和 C 的数组、Java 的 List 都不是一回事。它同时承担了三种角色:列表(list)、字典(map)、以及有序集合。底层是哈希表 + 双向链表,所以既能按下标访问,又能保持插入顺序。 ph
-
PHP 基本语法 03|字符串:单引号、双引号和那些细节2 阅读 2026-11-08单引号 vs 双引号,差别不只是"能不能插值" php <?php $a = '单引号'; $b = "双引号"; 单引号里只有两个转义有效:\'(表示单引号本身)和 \\(表示反斜杠)。其他像 \n 会原样输出两个字符: php <?ph
-
PHP 基本语法 02|运算符与表达式:优先级里埋着历史2 阅读 2026-11-08算术运算符 php <?php $a = 7; $b = 3; var_dump$a + $b; // int10 var_dump$a $b; // int4 var_dump$a $b; // int21 var_dump$a / $b
-
PHP 基本语法 01|变量与数据类型:以 `$` 开头,但没有类型2 阅读 2026-11-08变量就是一个带 $ 的盒子 PHP 的变量以 $ 开头,不需要声明,赋值即创建: php <?php $name = "张三"; $age = 28; $price = 99.5; $tags = "php", "web"; $isOk =