php学习01,一个文件搞懂php的所有语法,PHP实现贪吃蛇,记事本
php学习01,一个文件搞懂php的所有语法,PHP实现贪吃蛇,记事本
PHP是干什么用的来龙去脉适用场景发展历史详解
PHP 是一门专为 Web 开发而生的开源服务器端脚本语言,核心价值是快速、低成本地构建动态网站与后端服务。它从个人工具起步,历经30年演化,至今仍是全球市场占有率最高的后端技术(约77%网站在使用)。
下面从定义、历史、核心用途、适用场景、优缺点、现状与未来,一次性讲透。
一、PHP 是什么(一句话定义)
PHP(全称:PHP: Hypertext Preprocessor,超文本预处理器)
- 服务器端语言:代码运行在服务器,浏览器只看到最终HTML/数据
- 可嵌入HTML:直接写在网页里,
<?php ... ?>标记区分 - 开源免费:跨Windows/macOS/Linux,搭配Nginx/Apache即可运行
- 动态数据:连接数据库(MySQL为主)、处理表单、生成页面、接口
简单说:PHP = 网站后端的“胶水语言”,负责把数据、逻辑、页面拼起来。
二、来龙去脉:30年发展历史(关键节点)
1. 诞生:个人工具(1994–1995)
- 1994:丹麦程序员 Rasmus Lerdorf 用Perl/C写脚本,统计个人主页访问、展示简历
- 1995.6.8:正式发布 PHP/FI 1.0(Personal Home Page Forms Interpreter)
- 初衷:简化个人网站维护,不是“设计一门语言”
2. 崛起:PHP 3/4(1997–2004)
- 1997:以色列开发者 Andi Gutmans & Zeev Suraski 重写内核,发布 PHP 3
- 改名:PHP: Hypertext Preprocessor(递归缩写)
- 支持多数据库、模块化、扩展机制
- 2000:PHP 4 + Zend Engine 1
- 性能大幅提升、会话机制、输出缓冲
- 成为 LAMP(Linux+Apache+MySQL+PHP) 标配,统治中小网站
3. 成熟:PHP 5(2004–2015)
- 2004:PHP 5.0 全面支持面向对象(OOP)、异常、PDO数据库抽象层
- 2009–2014:PHP 5.3–5.6 加入命名空间、闭包、Trait、生成器
- 生态爆发:
- WordPress 成为全球第一CMS(至今43%网站用它)
- Laravel/Symfony/ThinkPHP 等框架出现
- 电商:Magento、WooCommerce 崛起
4. 重生:PHP 7(2015 里程碑)
- 性能革命:Zend Engine 3,速度比PHP 5.6 快2倍、内存减半
- 语法现代化:标量类型声明、返回值类型、空合并运算符、匿名类
- 一举扭转“PHP慢、老旧”的口碑
5. 现代:PHP 8(2020–至今)
- PHP 8.0–8.4:JIT编译、属性、枚举、只读类、构造器属性提升
- 协程生态(Swoole、RoadRunner):支持高并发、长连接、微服务
- 云原生、Serverless、API 主流化
版本速览(关键)
- PHP 1/2:个人工具
- PHP 3:正式语言
- PHP 4:Zend引擎、工业化
- PHP 5:面向对象、生态成熟
- PHP 7:性能飞跃
- PHP 8:现代强类型、JIT、协程
三、PHP 核心用途(到底用来干什么)
1. 动态网页与网站(最核心)
- 接收浏览器请求 → 查询数据库 → 拼接HTML → 返回给用户
- 典型:博客、新闻、企业官网、社区、搜索页面
2. 内容管理系统(CMS)
全球几乎所有主流CMS都用PHP:
- WordPress(43%网站)
- Drupal、Joomla、织梦、帝国CMS
- 政府/学校/媒体/中小企业官网首选
3. 电商系统
- WooCommerce(WordPress插件,全球电商份额~8.2%)
- Magento(Adobe Commerce,阿里国际站等)
- OpenCart、PrestaShop、ShopXO 等
4. API 与后端服务(前后端分离)
- 写 RESTful/GQL接口,给App、小程序、Vue/React前端供数据
- 登录、支付、订单、用户中心、数据统计
5. 命令行脚本(CLI)
- 定时任务、数据导入导出、日志清理、爬虫、自动化部署
- 不需要网页,直接
php 脚本.php运行
6. 其他(较少但能做)
- 小游戏后端、聊天室(Swoole)
- 桌面软件(PHP-GTK/Qt,极少)
- 物联网边缘逻辑、AI接口调用层
四、适用场景(什么时候选PHP)
✅ 最适合
- 快速建站/官网/博客
- 成本低、上线快、维护简单
- WordPress一天搞定企业站
- 中小电商/独立站/跨境
- WooCommerce/Magento 成熟生态
- 支付、物流、多语言、税务插件全
- CMS/内容平台/媒体/政务
- 多用户、权限、文章、评论、附件、SEO 成熟
- 创业MVP/原型/后台管理系统
- 开发效率极高:两周做完官网+后台+支付
- 改需求快、招人易、部署简单
- API/小程序后端/内部系统(OA/CRM/报表)
- Laravel/ThinkPHP 快速开发接口
- 配合Vue做管理后台极常见
- 高并发但非超大规模
- PHP 7/8 + Swoole 可支撑日均千万级请求
- 百度贴吧、新浪微博早期、维基百科、Facebook(早期)都用PHP
⚠️ 不太适合
- 底层系统、操作系统、驱动、高性能计算(C/C++/Go)
- 实时海量长连接(如百万在线聊天室,Go更优)
- 机器学习训练(Python)
- 原生桌面App(C#/Electron)
五、PHP 为什么能成功(核心优势)
- 简单易学
- 语法接近C/JS,变量
$开头,入门快 - 文档全、中文资料多、新手坑少
- 语法接近C/JS,变量
- 部署极简
- 虚拟主机/宝塔/PHPStudy 一键搭建
- 上传
.php文件就运行,不用编译
- 数据库天生友好
- 内置MySQL/PostgreSQL/SQLite支持
- “PHP+MySQL”黄金组合,低成本撑起动态网站
- 生态宇宙级庞大
- Composer:30万+扩展包(登录、支付、Excel、邮件、爬虫…)
- 框架:Laravel(优雅)、Symfony(企业)、ThinkPHP(国内)、Yii
- CMS/电商/论坛全开源解决方案
- 跨平台
- Windows/macOS/Linux 全支持
- 搭配Nginx/Apache/IIS 均可
- 性能今非昔比
- PHP 8+JIT 接近Java/Go水平
- Swoole协程:高并发、长连接、异步IO
六、现状与地位(2026)
- 市场份额:全球 ~77% 网站后端用PHP(W3Techs)
- 主流地位:CMS/电商/企业官网/小程序后端 绝对主流
- 语言状态:活跃维护,每年大版本(8.0→8.1→…→8.5)
- 误区澄清:
- ❌ “PHP已死”:错,依然是Web开发第一语言
- ❌ “PHP很慢”:PHP 7/8 性能极强
- ❌ “只能做小站”:Facebook/Wikipedia/百度贴吧 都证明能做巨型站
七、总结
PHP 是为“快速做网站、做后端、做业务系统”而生的语言:
- 历史:从个人工具 → Web标配 → 现代化高性能语言
- 用途:网站、CMS、电商、API、后台、脚本
- 优势:简单、快、便宜、生态强、跨平台
- 适合:创业、中小企业、快速开发、内容/电商类项目
一句话:
想低成本、高效率搞定网站和后端,PHP依然是首选之一。
要不要我帮你整理一份 PHP 核心语法速记(变量、数组、函数、MySQL、表单、会话),方便你快速入门?
1、一个文件搞懂php的所有语法
我给你写一个 PHP 文件,里面包含所有核心语法,你直接复制运行就能看懂,注释超详细。
all/_in/_one.php
<?php
// ==============================================
// 1. 基本输出
// ==============================================
echo "Hello World<br>"; // 输出字符串
print "你好<br>"; // 和 echo 差不多
var_dump("PHP 7.3"); // 打印类型+值
print_r(["a", "b", "c"]); // 打印数组结构
echo "<hr>";
// ==============================================
// 2. 变量
// ==============================================
$name = "张三";
$age = 20;
$isMan = true;
$money = 99.9;
echo "姓名:$name,年龄:$age<br>";
echo "变量类型:".gettype($name)."<br>";
echo "<hr>";
// ==============================================
// 3. 常量
// ==============================================
define("VERSION", "1.0.0");
echo "版本:".VERSION."<br>";
echo "<hr>";
// ==============================================
// 4. 字符串操作
// ==============================================
$str1 = "hello";
$str2 = "world";
echo $str1 . " " . $str2 . "<br>"; // 拼接
echo strlen("abc") . "<br>"; // 长度
echo strpos("hello", "e") . "<br>"; // 查找
echo substr("abcdef", 1, 3) . "<br>"; // 截取
echo strtoupper("aaa") . "<br>"; // 转大写
echo "<hr>";
// ==============================================
// 5. 数组(最常用)
// ==============================================
// 索引数组
$arr1 = ["苹果", "香蕉", "梨"];
echo $arr1[0] . "<br>";
// 关联数组(键值对)
$user = [
"id" => 1,
"name" => "李四",
"phone" => "13800138000"
];
echo $user["name"] . "<br>";
// 二维数组
$list = [
["id"=>1, "name"=>"A"],
["id"=>2, "name"=>"B"]
];
echo $list[1]["name"] . "<br>";
echo "<hr>";
// ==============================================
// 6. 条件判断
// ==============================================
$score = 85;
if ($score >= 90) {
echo "优秀<br>";
} elseif ($score >= 60) {
echo "及格<br>";
} else {
echo "不及格<br>";
}
// 三元运算
echo $score >= 60 ? "通过" : "不通过";
echo "<br>";
// switch
$day = 2;
switch ($day) {
case 1: echo "周一"; break;
case 2: echo "周二"; break;
default: echo "其他";
}
echo "<hr>";
// ==============================================
// 7. 循环
// ==============================================
// for
for ($i=1; $i<=3; $i++) {
echo "循环:$i<br>";
}
// while
$i = 1;
while ($i <= 2) {
echo "while:$i<br>";
$i++;
}
// foreach 遍历数组
$fruit = ["apple", "pear"];
foreach ($fruit as $f) {
echo $f."<br>";
}
foreach ($user as $k => $v) {
echo "$k => $v<br>";
}
echo "<hr>";
// ==============================================
// 8. 函数
// ==============================================
// 普通函数
function add($a, $b) {
return $a + $b;
}
echo "1+2=".add(1,2)."<br>";
// 带默认参数
function sayHi($name = "游客") {
return "hi $name";
}
echo sayHi()."<br>";
echo sayHi("小明")."<br>";
// 匿名函数
$func = function($x) { return $x*2; };
echo $func(5)."<br>";
echo "<hr>";
// ==============================================
// 9. 超全局变量(了解)
// ==============================================
// var_dump($_GET);
// var_dump($_POST);
// var_dump($_SERVER);
// ==============================================
// 10. 表单/GET 接收示例(浏览器访问 ?name=test)
// ==============================================
$name = isset($_GET["name"]) ? $_GET["name"] : "未传参";
echo "GET 参数 name = $name<br>";
echo "<hr>";
// ==============================================
// 11. 简单 MySQL 演示(最常用)
// ==============================================
/*
$host = "127.0.0.1";
$user = "root";
$pwd = "root";
$db = "test";
$conn = mysqli_connect($host,$user,$pwd,$db);
mysqli_query($conn,"set names utf8");
$sql = "select * from user";
$res = mysqli_query($conn,$sql);
while($row = mysqli_fetch_assoc($res)){
print_r($row);
}
*/
// ==============================================
// 12. 面向对象 OOP
// ==============================================
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function say() {
return "我是".$this->name;
}
}
$p = new Person("小红");
echo $p->say();
?>
怎么运行
- 保存为
all_in_one.php - 打开终端进入目录:
php -S localhost:8080
- 浏览器打开:
http://localhost:8080/all_in_one.php
这个文件包含了所有你要的语法
- 输出
echo/print/var_dump - 变量、常量
- 字符串、数组(一维/二维/关联)
if/else/switch/三元for/while/foreach- 函数(普通、默认参数、匿名)
- GET 参数接收
- MySQL 基础查询
- 面向对象类、对象、方法
你想要我再给你做一个/*/极简浓缩版(只有 30 行)//*吗?
Hello World
你好
string(7) "PHP 7.3" Array ( [0] => a [1] => b [2] => c )
Warning: Undefined variable $name,年龄: in D:/Users/AAA/IdeaProjects/readinglist/html-test/php/all_in_one.php on line 19
姓名:20
变量类型:string
版本:1.0.0
hello world
3
1
bcd
AAA
苹果
李四
B
及格
通过
周二
循环:1
循环:2
循环:3
while:1
while:2
apple
pear
id => 1
name => 李四
phone => 13800138000
1+2=3
hi 游客
hi 小明
10
GET 参数 name = 未传参
PHP实现贪吃蛇
我给你写一个纯 PHP + 浏览器网页版贪吃蛇,一个文件搞定,复制就能直接运行,不需要任何框架。
snake.php
<?php
// 纯PHP实现贪吃蛇游戏(网页版)
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>PHP 贪吃蛇</title>
<style>
*{margin:0;padding:0;box-sizing:border-box;}
body{background:#1a1a1a;color:#fff;display:flex;justify-content:center;align-items:center;min-height:100vh;flex-direction:column;}
.game-box{border:2px solid #444;display:grid;grid-template-columns:repeat(20,20px);gap:1px;background:#222;}
.cell{width:20px;height:20px;background:#333;}
.snake{background:#0f0;}
.food{background:#f33;}
.info{margin-bottom:10px;font-size:18px;}
</style>
</head>
<body>
<div class="info">得分:<span id="score">0</span></div>
<div class="game-box" id="box"></div>
<script>
// 游戏配置
const ROWS = 20;
const COLS = 20;
const box = document.getElementById('box');
const scoreSpan = document.getElementById('score');
// 初始化格子
let grid = [];
for(let i=0;i<ROWS*COLS;i++){
const cell = document.createElement('div');
cell.classList.add('cell');
box.appendChild(cell);
grid.push(cell);
}
// 蛇初始状态
let snake = [200,201,202];
let food = 0;
let dir = 1; // 1右 -1左 20下 -20上
let score = 0;
let timer = null;
// 随机生成食物
function makeFood(){
food = Math.floor(Math.random()*grid.length);
if(snake.includes(food)) makeFood();
}
// 渲染
function render(){
grid.forEach(c=>c.className='cell');
snake.forEach(i=>grid[i].classList.add('snake'));
grid[food].classList.add('food');
scoreSpan.textContent = score;
}
// 移动逻辑
function move(){
let head = snake[0] + dir;
// 撞墙
if(head<0 || head>=ROWS*COLS) return gameOver();
// 左右穿墙
if(dir===1 && head%COLS===0) return gameOver();
if(dir===-1 && head%COLS===COLS-1) return gameOver();
// 撞自己
// if(snake.includes(head)) return gameOver();
snake.unshift(head);
// 吃到食物
if(head===food){
score+=10;
makeFood();
}else{
snake.pop();
}
render();
}
function gameOver(){
clearInterval(timer);
alert('游戏结束!得分:'+score);
location.reload();
}
// 键盘控制
document.addEventListener('keydown',e=>{
switch(e.key){
case 'ArrowUp': if(dir!==20) dir=-20; break;
case 'ArrowDown': if(dir!==-20) dir=20; break;
case 'ArrowLeft': if(dir!==1) dir=-1; break;
case 'ArrowRight': if(dir!==-1) dir=1; break;
}
});
// 开始游戏
makeFood();
render();
timer = setInterval(move,150);
</script>
</body>
</html>
运行方法
- 保存为
snake.php - 在该文件夹打开 CMD / PowerShell,运行:
php -S localhost:8080
- 浏览器打开:
http://localhost:8080/snake.php
游戏操作
- ↑ ↓ ← → 方向键 控制蛇
- 吃到红色方块加分
- 撞墙/撞自己游戏结束
为什么是 PHP 实现?
- 结构用 PHP 输出 HTML
- 游戏逻辑用 JS 运行在浏览器
- 真正纯 PHP 命令行版也能写,但只能在黑框框跑,不好看
想要我再给你写一个 PHP 命令行黑框框版本 吗?
php +html 实现记事本,要有列表页和编辑页,实现增删改查
好,我直接给你做一套完整 PHP + HTML 记事本(无数据库,文件存储),包含:
列表页 + 新增 + 编辑 + 删除 + 修改,纯原生 PHP,一个文件夹跑起来,复制即用。
项目结构
/notebook/
├─ index.php // 笔记列表页
├─ add.php // 新增笔记
├─ edit.php // 编辑笔记
├─ delete.php // 删除笔记
└─ notes/ // 存放所有笔记(自动创建)
- index.php 笔记列表
<?php
$notesDir = 'notes';
if (!is_dir($notesDir)) mkdir($notesDir);
$files = array_diff(scandir($notesDir), ['.', '..']);
$notes = [];
foreach ($files as $f) {
$path = $notesDir . DIRECTORY_SEPARATOR . $f;
$time = filemtime($path);
$notes[] = [
'id' => $f,
'title' => basename($f, '.txt'),
'time' => date('Y-m-d H:i:s', $time)
];
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>笔记列表</title>
<style>
body{max-width:800px;margin:20px auto;font-family:Arial}
.item{padding:10px;border-bottom:1px solid #eee;display:flex;justify-content:space-between}
.title{font-size:16px}
.time{color:#999;font-size:12px}
a{margin-left:10px;color:#07c;text-decoration:none}
.add{margin-bottom:15px;display:inline-block;padding:8px 16px;background:#07c;color:#fff;border-radius:4px}
</style>
</head>
<body>
<h1>我的记事本</h1>
<a href="add.php" class="add">+ 新增笔记</a>
<?php if (empty($notes)): ?>
<p>暂无笔记</p>
<?php else: ?>
<?php foreach ($notes as $n): ?>
<div class="item">
<div>
<div class="title"><?= $n['title'] ?></div>
<div class="time"><?= $n['time'] ?></div>
</div>
<div>
<a href="edit.php?id=<?= $n['id'] ?>">编辑</a>
<a href="delete.php?id=<?= $n['id'] ?>" onclick="return confirm('确定删除?')">删除</a>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
</body>
</html>
- add.php 新增笔记
<?php
if ($_POST) {
$title = trim($_POST['title']);
$content = trim($_POST['content']);
if ($title && $content) {
$id = uniqid();
file_put_contents("notes/$id.txt", $content);
header('Location: index.php');
exit;
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>新增笔记</title>
<style>
body{max-width:800px;margin:20px auto}
input,textarea{width:100%;padding:10px;margin-bottom:10px;font-size:16px}
textarea{height:300px}
button{padding:10px 20px;background:#07c;color:#fff;border:none;border-radius:4px;cursor:pointer}
</style>
</head>
<body>
<h1>新增笔记</h1>
<form method="post">
<input name="title" placeholder="请输入标题" required>
<textarea name="content" placeholder="请输入内容" required></textarea>
<button type="submit">保存</button>
</form>
</body>
</html>
- edit.php 编辑笔记
<?php
$id = $_GET['id'] ?? '';
$file = "notes/$id";
if (!is_file($file)) exit('笔记不存在');
$content = file_get_contents($file);
$title = basename($file, '.txt');
if ($_POST) {
$newTitle = trim($_POST['title']);
$newContent = trim($_POST['content']);
if ($newTitle && $newContent) {
unlink($file);
file_put_contents("notes/$id", $newContent);
header('Location: index.php');
exit;
}
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>编辑笔记</title>
<style>
body{max-width:800px;margin:20px auto}
input,textarea{width:100%;padding:10px;margin-bottom:10px;font-size:16px}
textarea{height:300px}
button{padding:10px 20px;background:#07c;color:#fff;border:none;border-radius:4px;cursor:pointer}
</style>
</head>
<body>
<h1>编辑笔记</h1>
<form method="post">
<input name="title" value="<?= $title ?>" required>
<textarea name="content" required><?= htmlspecialchars($content) ?></textarea>
<button type="submit">保存修改</button>
</form>
</body>
</html>
- delete.php 删除笔记
<?php
$id = $_GET['id'] ?? '';
$file = "notes/$id";
if (is_file($file)) unlink($file);
header('Location: index.php');
exit;
✅ 运行方法
- 新建文件夹
notebook - 把上面 4 个文件放进去
- 文件夹里 手动新建一个空文件夹
notes - 终端进入目录运行:
php -S localhost:8080
- 打开浏览器访问:
http://localhost:8080/index.php
✅ 功能完整实现
-
✅ 笔记列表展示
-
✅ 新增笔记
-
✅ 编辑笔记
-
✅ 删除笔记
-
✅ 修改时间自动记录
-
✅ 无数据库(文件存储)
-
✅ 纯 PHP + HTML,无任何依赖
想要我再给你加上 Markdown 编辑器 / 搜索 / 分类 / 登录 吗?

《网络安全从零到精通全套学习大礼包》
96节从入门到精通的全套视频教程免费领取
如果你也想通过学网络安全技术去帮助就业和转行,我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。

网络安全学习路线图
想要学习 网络安全,作为新手一定要先按照路线图学习,方向不对,努力白费。对于从来没有接触过网络安全的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线,大家跟着这个路线图学习准没错。

配套实战项目/源码
所有视频教程所涉及的实战项目和项目源码

学习电子书籍
学习网络安全必看的书籍和文章的PDF,市面上网络安全书籍确实太多了,这些是我精选出来的

面试真题/经验

以上资料如何领取?

,作为新手一定要先按照路线图学习,方向不对,努力白费。对于从来没有接触过网络安全的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线,大家跟着这个路线图学习准没错。

配套实战项目/源码
所有视频教程所涉及的实战项目和项目源码

学习电子书籍
学习网络安全必看的书籍和文章的PDF,市面上网络安全书籍确实太多了,这些是我精选出来的

面试真题/经验

以上资料如何领取?

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)