Files
mkdocs/docs/学习笔记/php/PHP快速学习路径.md
2026-01-30 10:45:19 +08:00

13 KiB
Raw Blame History

PHP快速学习路径针对有经验的开发者

基于你已有的Android、Python后端、前端开发经验快速掌握PHP


一、快速对比学习1-2天

1. 语法对比速查

变量和数据类型

// PHP - 弱类型,变量以$开头
$name = "PHP";
$age = 25;
$price = 99.99;
$isActive = true;

// 对比Java/Kotlin强类型
// String name = "Java";
// int age = 25;

// 对比Python弱类型无$
// name = "Python"
// age = 25

数组操作

// PHP数组类似Python的list和dict混合
$arr = [1, 2, 3];                    // 索引数组
$arr = ['name' => 'PHP', 'age' => 25]; // 关联数组类似Python dict

// 对比Java
// List<Integer> list = Arrays.asList(1, 2, 3);
// Map<String, Object> map = new HashMap<>();

// 对比Python
// arr = [1, 2, 3]
// arr = {'name': 'Python', 'age': 25}

函数定义

// PHP
function add($a, $b) {
    return $a + $b;
}

// 对比Java
// public int add(int a, int b) { return a + b; }

// 对比Python
// def add(a, b): return a + b

2. 面向对象对比

// PHP类定义类似Java/Python
class User {
    private $name;
    private $age;
    
    public function __construct($name, $age) {  // 构造函数
        $this->name = $name;
        $this->age = $age;
    }
    
    public function getName() {
        return $this->name;
    }
}

// 对比Java
// public class User {
//     private String name;
//     public User(String name) { this.name = name; }
// }

// 对比Python
// class User:
//     def __init__(self, name):
//         self.name = name

关键差异:

  • PHP使用$this访问实例属性类似Java的this
  • 构造函数名是__construct类似Python的__init__
  • 访问修饰符:publicprivateprotected与Java相同

二、核心差异快速掌握2-3天

1. PHP特有语法

超全局变量类似Android的Intent、Python的request

// $_GET - 获取URL参数类似Android的Intent.getExtra()
$id = $_GET['id'];

// $_POST - 获取POST数据类似Android的Intent.getExtra()
$name = $_POST['name'];

// $_SESSION - 会话数据类似Android的SharedPreferences
$_SESSION['user_id'] = 123;
$userId = $_SESSION['user_id'];

// $_COOKIE - Cookie数据
$token = $_COOKIE['token'];

// $_SERVER - 服务器信息
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];

字符串处理

// PHP字符串函数类似Python的字符串方法
$str = "Hello World";
$length = strlen($str);              // 长度
$upper = strtoupper($str);           // 转大写
$lower = strtolower($str);           // 转小写
$pos = strpos($str, "World");        // 查找位置
$newStr = str_replace("World", "PHP", $str); // 替换

// 对比Python
// str.upper()
// str.lower()
// str.find()
// str.replace()

数组函数类似Python的list方法

$arr = [1, 2, 3, 4, 5];

// 常用数组函数
count($arr);                    // 长度类似len()
array_push($arr, 6);            // 添加元素类似append()
array_pop($arr);                // 移除最后一个
array_shift($arr);              // 移除第一个
in_array(3, $arr);              // 检查是否存在类似in
array_map(function($x) { return $x * 2; }, $arr); // 映射类似map()
array_filter($arr, function($x) { return $x > 2; }); // 过滤类似filter()

2. 数据库操作(你已熟悉,快速对比)

PDO使用类似Python的数据库操作

// 连接数据库类似Python的pymysql/sqlite3
$pdo = new PDO("mysql:host=localhost;dbname=test", $user, $pass);

// 查询类似Python的cursor.execute()
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

// 插入类似Python的execute + commit
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->execute([$name, $email]);

// 对比Python
// cursor.execute("SELECT * FROM users WHERE id = %s", (id,))
// user = cursor.fetchone()

三、Web开发快速上手3-5天

1. HTTP处理你已熟悉直接上手

// 处理GET请求
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $id = $_GET['id'] ?? null;  // ?? 是null合并运算符类似Python的or
    // 处理逻辑
}

// 处理POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = json_decode(file_get_contents('php://input'), true);
    // 处理逻辑
}

// 返回JSON类似Python的jsonify
header('Content-Type: application/json');
echo json_encode(['status' => 'success', 'data' => $result]);

2. 会话管理类似Android的SharedPreferences

// 启动会话
session_start();

// 设置会话数据
$_SESSION['user_id'] = 123;
$_SESSION['username'] = 'admin';

// 获取会话数据
$userId = $_SESSION['user_id'] ?? null;

// 销毁会话
session_destroy();

3. 文件上传类似Android的文件选择

// 处理文件上传
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $tmpName = $_FILES['file']['tmp_name'];
    $fileName = $_FILES['file']['name'];
    $targetPath = 'uploads/' . $fileName;
    
    move_uploaded_file($tmpName, $targetPath);
}

四、框架快速入门1周

推荐Laravel类似Django/Flask

为什么选择Laravel

  • 路由系统类似Flask的装饰器路由
  • ORM类似Django的Model
  • 中间件类似Django的Middleware
  • 模板引擎类似Django的Template

快速对比

// Laravel路由类似Flask
Route::get('/users', function() {
    return User::all();
});

Route::post('/users', function(Request $request) {
    return User::create($request->all());
});

// 对比Flask
// @app.route('/users', methods=['GET'])
// def get_users():
//     return jsonify(User.query.all())
// Laravel Model类似Django Model
class User extends Model {
    protected $fillable = ['name', 'email'];
}

// 使用类似Django ORM
User::create(['name' => 'John', 'email' => 'john@example.com']);
User::where('id', 1)->first();
User::where('age', '>', 18)->get();

// 对比Django
// class User(models.Model):
//     name = models.CharField(max_length=100)
// User.objects.create(name='John')
// User.objects.filter(age__gt=18)

五、实战项目快速搭建1-2周

项目1简单API服务2-3天

目标利用你的Python后端经验快速搭建一个PHP API

// api.php - 简单API实现
header('Content-Type: application/json');

$method = $_SERVER['REQUEST_METHOD'];
$path = $_SERVER['REQUEST_URI'];

switch ($method) {
    case 'GET':
        if ($path === '/api/users') {
            // 查询用户列表
            $users = getUsers();
            echo json_encode($users);
        }
        break;
        
    case 'POST':
        if ($path === '/api/users') {
            // 创建用户
            $data = json_decode(file_get_contents('php://input'), true);
            $user = createUser($data);
            echo json_encode($user);
        }
        break;
}

项目2结合前端3-5天

目标利用你的前端经验做一个完整的CRUD应用

// 后端API类似你Python写的接口
// users.php
$pdo = new PDO("mysql:host=localhost;dbname=test", $user, $pass);

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $stmt = $pdo->query("SELECT * FROM users");
    $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($users);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = json_decode(file_get_contents('php://input'), true);
    $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
    $stmt->execute([$data['name'], $data['email']]);
    echo json_encode(['success' => true]);
}
// 前端调用(你已熟悉)
fetch('/api/users')
    .then(res => res.json())
    .then(users => {
        // 显示用户列表
    });

项目3微信小程序后端5-7天

目标利用你的小程序经验用PHP做小程序后端

// 小程序登录接口类似你Python写的
// login.php
$code = $_POST['code'];  // 微信登录code

// 调用微信API获取openid
$url = "https://api.weixin.qq.com/sns/jscode2session";
$params = [
    'appid' => $appId,
    'secret' => $appSecret,
    'js_code' => $code,
    'grant_type' => 'authorization_code'
];

$response = file_get_contents($url . '?' . http_build_query($params));
$data = json_decode($response, true);

// 保存用户信息
$openid = $data['openid'];
saveUser($openid);

echo json_encode(['openid' => $openid]);

六、学习时间规划

第1周基础语法 + 简单项目

  • Day 1-2:语法对比学习,完成基础练习
  • Day 3-4数据库操作完成CRUD练习
  • Day 5-7完成一个简单API项目

第2周框架学习 + 实战项目

  • Day 1-3Laravel基础路由、模型、控制器
  • Day 4-5完成Laravel项目
  • Day 6-7:优化和部署

第3周进阶 + 实际应用

  • Day 1-3深入学习Laravel高级特性
  • Day 4-5:完成微信小程序后端
  • Day 6-7:性能优化和安全加固

七、快速学习技巧

1. 利用已有知识迁移

  • 面向对象PHP的OOP与Java/Python类似直接迁移
  • 数据库操作PDO与Python的数据库操作类似
  • HTTP处理与Android的HTTP请求、Python的Flask/Django类似
  • 前端交互:你已熟悉,直接上手

2. 重点学习PHP特有内容

  • 超全局变量$_GET$_POST$_SESSION
  • 数组函数PHP的数组函数非常丰富
  • 命名空间类似Java的package
  • ComposerPHP的包管理工具类似Python的pip

3. 跳过不紧急的内容

  • 基础语法细节:你已经理解编程概念,快速浏览即可
  • 底层原理:先会用,再深入
  • 不常用的特性:按需学习

4. 实战驱动学习

  • 边学边做:不要只看文档,直接写代码
  • 改造现有项目把Python项目改成PHP版本
  • 参考开源项目看GitHub上的PHP项目

八、推荐学习资源

快速入门

  1. PHP官方文档https://www.php.net/manual/zh/

    • 直接看函数参考,按需查阅
  2. 菜鸟教程PHPhttps://www.runoob.com/php/php-tutorial.html

    • 快速浏览语法部分
  3. Laravel文档https://laravel.com/docs

    • 直接看快速开始,边做边学

实战项目

  1. GitHub搜索:搜索"php api"、"php crud"等关键词
  2. Laravel项目模板使用Laravel的starter项目
  3. PHP实战教程:找一些完整的项目教程

九、常见问题快速解决

Q1: PHP与Python的主要区别

A:

  • PHP主要用于Web开发Python更通用
  • PHP是弱类型Python也是弱类型你已经习惯
  • PHP的数组功能强大类似Python的list+dict
  • PHP的语法更接近C/JavaPython更简洁

Q2: 如何快速上手Laravel

A:

  • 如果你熟悉DjangoLaravel会很容易
  • 路由系统类似Flask
  • ORM类似Django的Model
  • 直接看Laravel的快速开始跟着做一遍

Q3: PHP的性能如何

A:

  • PHP 7+性能很好接近Java
  • 使用OPcache可以进一步提升性能
  • 对于Web应用性能足够

Q4: 需要学习哪些PHP特性

A:

  • 必须掌握:基础语法、数组操作、数据库操作、会话管理
  • 建议掌握面向对象、命名空间、Composer、框架使用
  • 可选学习:底层原理、扩展开发

十、学习检查清单

基础语法1-2天

  • 变量和数据类型
  • 数组操作
  • 函数定义
  • 面向对象基础

Web开发2-3天

  • HTTP请求处理
  • 数据库操作PDO
  • 会话管理
  • 文件上传

框架使用3-5天

  • Laravel安装和配置
  • 路由系统
  • 模型和数据库
  • 控制器和视图

实战项目1-2周

  • 完成一个API项目
  • 完成一个Web应用
  • 完成一个小程序后端

总结

基于你的经验背景,预计2-3周可以基本掌握PHP

  1. 第1周:语法学习 + 简单项目(利用已有知识快速迁移)
  2. 第2周:框架学习 + 完整项目利用Django/Flask经验
  3. 第3周:实战应用 + 优化(结合你的实际需求)

关键建议:

  • 不要从头学基础,直接对比学习
  • 边学边做,实战驱动
  • 利用已有知识,快速迁移
  • 重点学习PHP特有内容
  • 框架选择Laravel类似Django容易上手

祝你学习顺利! 🚀