← PHP入门 没有下一篇了 →

PHP特性

原创 2026-05-08 PHP 已有人查阅

我第一次接触PHP大概是十几年前,那时候做个动态网站,大家基本就两个选择:ASP或者PHP。ASP是微软家的,得用Windows服务器,花钱。PHP呢?随便找个Linux空间就能跑,免费,代码写起来还顺手。

后来慢慢发现,PHP能活到现在还这么流行,靠的不仅仅是免费。下面聊聊它真正实用的那些特性。每个我都会尽量说透,配上例子。

1.执行速度:快得不讲道理

PHP跑得快,尤其是跟JSP、ASP比。原因很简单:它自己管内存。

什么意思呢?就是PHP处理完一个请求后,会把用过的内存自己清理掉。不像某些语言,得等操作系统来回收。这样一来,服务器负担轻了,响应速度自然就上去了。

举个例子:你用PHP写个循环,处理一万条数据。它会在执行过程中自动管理内存,处理完就把临时变量清掉。换成同样逻辑的Python脚本,可能内存占用会越来越高,直到崩掉。

个人经验:之前在虚拟主机上跑一个CMS系统,PHP7版本的响应时间比PHP5快了将近一倍。同样的服务器,同样的流量,升级版本就有效果。

专业名词:ZendEngine、OPcache、内存管理、请求生命周期

2.开源:真免费,随便改

这个不用多说。PHP的源码就在网上挂着呢,你去 php.net 随便下。想加功能?改源码。想修bug?自己动手。

关键是不花钱。对创业公司、个人开发者来说,成本这块能省不少。

对比一下:.NET以前要买Windows服务器授权,SQLServer也要钱。PHP+MySQL免费,跑在Linux上,稳得很。

现在的PHP8系列,所有新特性也都是开放讨论、开放实现的。你甚至可以向官方提建议。

专业名词:PHPLicense、Zend引擎、PHP基金会

3.语法:熟悉,好上手

PHP的语法跟C、Java、Perl很像。学过其中任何一个,看PHP代码基本能猜个不离十。

最基本的写法:

<?php
  $name = "代码号";
  echo "欢迎 " . $name . " 回来";
?>

就这三行。<?php...?> 是标签,里面写PHP代码。变量前面加 $,字符串用点号拼接。简单直接。

个人建议:新手别一上来就学框架,先写原生PHP。把语法、数组操作、函数这些练熟,后面用Laravel或ThinkPHP会很轻松。很多人一上来就装Composer、配路由,结果基础不牢,出问题了连调试都不知道从哪入手。

专业名词:标记语言、变量、字符串拼接、控制结构

4.可嵌入HTML:混合开发很方便

这个特性是PHP的杀手锏。你可以在HTML文件里直接插PHP代码。

看例子:

<!DOCTYPE html>
<html>
<head><title>代码号学习示例</title></head>
<body>
  <h1>欢迎</h1>
  <p>当前时间:<?php echo date("Y-m-d H:i:s"); ?></p>
</body>
</html>

看到没?<?php...?> 直接嵌在HTML中间。页面静态部分用HTML写,动态部分用PHP生成。不用额外建什么模板文件。

为什么不用别的方案:比如Java的JSP,虽然也能嵌,但配置麻烦,还要部署到Tomcat之类的容器。PHP呢?文件放上去就能跑。

项目开发中,很多人会用PHP配合模板引擎(比如Smarty、Blade)。但原理都是一样的:PHP先生成HTML,再发给浏览器。

专业名词:内嵌脚本、模板引擎、输出缓冲

5.跨平台:Windows、Mac、Linux随便换

你可以在Windows上写PHP代码,然后直接上传到Linux服务器上跑。不用改任何东西。

我自己就干过这事:本地用Windows+XAMPP开发,写完上传到CentOS服务器。文件复制过去,数据库配置改一下,直接跑起来。

Mac用户也一样。PHP官方对三大系统都支持得很好。

唯一要注意的:文件路径写法。Windows用反斜杠 \,Linux/Mac用正斜杠 /。建议代码里统一用 DIRECTORY_SEPARATOR 常量,或者直接全部用正斜杠 './folder/file.php',Linux和Windows都认。

专业名词:POSIX兼容、DIRECTORY_SEPARATOR、环境变量

6.数据库支持:主流的基本都支持

PHP连数据库太方便了。MySQL、PostgreSQL、SQLite、SQLServer、Oracle……基本你能想到的,它都有驱动。

最推荐的方式:PDO

PDO是PHP自带的一个数据库抽象层。你用PDO写的代码,换数据库时几乎不用改。

示例(连MySQL):

<?php
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "password");
$stmt = $pdo->query("SELECT * FROM users");
foreach ($stmt as $row) {
    echo $row['name'] . "<br>";
}
?>

换成SQLite也就改一下DSN:

$pdo = new PDO("sqlite:database.db");

为什么不用mysqli:mysqli只支持MySQL。PDO能支持12种数据库。万一以后要换成PostgreSQL,mysqli的代码得重写,PDO的只改一行。

个人经验:2016年做过一个项目,开始用MySQL,后来客户非要换成SQLServer。幸亏当时用了PDO,就改了连接字符串和几个日期函数,其他没动。要是用的mysqli,那得重写上千行。

专业名词:PDO、ODBC、预处理语句、防止SQL注入

7.错误报告:跑的时候就能发现问题

PHP有内置的错误常量,能在运行时直接告诉你哪里出问题了。

常用几个:

  • E_ERROR:致命错误,代码直接停。比如调用不存在的函数。

  • E_WARNING:警告,不停止运行。比如include一个不存在的文件。

  • E_NOTICE:小问题提示。比如用了一个没定义的变量。

  • E_PARSE:语法错误,连跑都跑不起来。

  • E_STRICT:提示你改进代码规范。

开发时可以这样设置,显示所有错误:

error_reporting(E_ALL);
ini_set('display_errors', 1);

到了线上环境,记得关掉显示,改成记日志:

error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);

个人建议:开发阶段一定把错误级别开到较高。很多人觉得Notice无所谓,但Notice多了说明代码不规范,早晚出事。我习惯用 error_reporting(E_ALL|E_STRICT),把能开的都开了。

专业名词:错误级别、异常处理、try-catch、日志记录

8.弱类型:不用声明变量类型

PHP是动态类型的。你不需要先声明 int$a,直接用就行。

<?php
$var = 10;        // 整数
$var = "hello";   // 字符串,没问题
$var = 3.14;      // 浮点数,也没问题
$var = true;      // 布尔值,照样可以
?>

PHP会自动识别类型,也自动做类型转换。

比如字符串跟数字拼接:

$num = 5;
$text = "有 " . $num . " 条记录";

$num 自动转成字符串。

为什么不用强制类型:弱类型写小项目快,改起来方便。但大项目容易埋坑。PHP7开始加了 declare(strict_types=1),可以开启严格模式。看项目规模和个人习惯。

专业名词:动态类型、类型抖动、类型声明、类型安全

9.服务器支持:什么Web服务器都能跑

Apache、Nginx、IIS、LiteSpeed、Caddy……PHP基本通吃。

最常见组合:

  • Apache+mod_php:老牌组合,稳定,配置简单。

  • Nginx+PHP-FPM:性能好,高并发优选。

现在开发环境用Docker也挺多,一个 php:apache 镜像就全搞定了。

部署小提示:不管用哪个服务器,记得把PHP的错误日志跟Web服务器的日志分开,排查问题方便。

专业名词:SAPI、PHP-FPM、mod_php、FastCGI

10.安全性:该有的都有

没有绝对安全的语言,但PHP提供了很多安全机制。关键看你用不用。

主要功能:

  • 输入验证filter_var() 验证邮箱、URL、整数

  • 数据过滤htmlspecialchars() 防XSS

  • 会话安全:可以改session名称、设置过期时间

  • 密码处理password_hash() 和 password_verify()

  • CSRF防护:自己加token验证

基本示例(防SQL注入+防XSS):

<?php
// 防 SQL 注入:用预处理
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);

// 防 XSS:输出时转义
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
?>

个人经验:新手最容易忽略的是文件上传安全。上传图片不要光检查后缀,要用 getimagesize() 真的读一下文件头。我就遇到过有人把PHP文件改成.jpg上传,然后通过别的方式执行的漏洞。

专业名词:XSS、SQL注入、CSRF、会话劫持、输入净化

11.控制力强:代码量少,干活快

同样一个功能,PHP可能10行就写完了,Java可能要30行。

比如读一个文件所有内容:

$content = file_get_contents("data.txt");

两行(甚至一行)搞定。Java你得开FileInputStream、BufferedReader、循环读、关闭流……

PHP的数组函数也特别丰富。count、array_map、array_filter、array_merge……几十个函数直接调用。

举个实际例子:把用户列表里的名字提取出来:

$names = array_column($users, 'name');

一行。换其他语言?先遍历,再push,再返回。

专业名词:内置函数、数组操作、SPL标准库

12.社区庞大:不怕遇到问题没人帮

PHP的社区是真的活跃。你遇到的大部分问题,早就有人踩过坑了。

  • 官方文档:php.net 上面每个函数都有用户评论、示例代码

  • 论坛:StackOverflow、Reddit的r/PHP

  • 中文社区:PHP中文网、LearnKu(原LaravelChina)

  • 开源项目:GitHub上搜一下,成千上万

个人经验:从PHP5.2一直到8.2,每次升级碰到不兼容的问题,Google一下基本10分钟内有答案。社群各种课程、问答、文档都很齐。

尤其新手,去社区搜“PHP入门教程”,能找到大量免费资源。代码号学习编程这类平台也是跟着社群生态起来的。

专业名词:PHP-FIG、PSR规范、Composer、Packagist

本节课程知识要点

  1. PHP执行快,靠的是自己的内存管理

  2. 开源免费,所有资源随便用

  3. 语法像C/Java,好上手

  4. 能直接嵌HTML,省事

  5. 跨平台,开发生产环境不打架

  6. 数据库支持全,推荐PDO

  7. 错误报告清晰,找问题方便

  8. 弱类型灵活,7以上也可以开严格模式

  9. 主流Web服务器都能跑

  10. 安全功能齐全,开发者得会用

  11. 代码量少,控制灵活

  12. 社区大,学起来不孤单

← PHP入门 没有下一篇了 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号