CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
PHP 进阶/课时/测试与静态分析
RawBlame
课时目录12 节

PHP 进阶

  1. 01PHP 进阶地图
  2. 02语法与数据结构
  3. 03Web 与超全局变量
  4. 04安全基础
  5. 05OOP 深入
  6. 06现代 PHP 工程
  7. 07数据库与 ORM
  8. 08性能与运维
  9. 09测试与静态分析
  10. 10框架生态
  11. 11集成与 CLI
  12. 12综合练习

测试与静态分析

Pest、PHPCS、Phan、Xdebug。

30 分钟

测试与静态分析

可维护的 PHP 项目离不开 自动化测试与代码质量工具。本课介绍 Pest、PHPCS、Phan 与 Xdebug。前置 php-essentials;路径 /roadmaps/php。

学习目标

  • 用 Pest 编写单元测试与断言
  • 用 PHPCS 统一代码风格
  • 了解 Phan 静态分析与 Xdebug 调试

Pest 单元测试

composer require pestphp/pest --dev
./vendor/bin/pest --init
// tests/LessonServiceTest.php
use App\Service\LessonService;

test('returns lesson by slug', function () {
    $repo = Mockery::mock(LessonRepository::class);
    $repo->shouldReceive('findBySlug')->with('pha-tooling')->andReturn([
        'slug' => 'pha-tooling', 'title' => '测试与静态分析', 'order' => 9,
    ]);
    $service = new LessonService($repo);
    $lesson = $service->get('pha-tooling');
    expect($lesson)->not->toBeNull()
        ->and($lesson->slug)->toBe('pha-tooling');
});

Pest 语法简洁;底层基于 PHPUnit,CI 可直接 ./vendor/bin/pest。

PHPCS 代码风格

composer require squizlabs/php_codesniffer --dev
./vendor/bin/phpcs --standard=PSR12 src/
./vendor/bin/phpcbf --standard=PSR12 src/  # 自动修复

团队统一 PSR-12,减少 code review 中的格式争论。

Phan 静态分析

composer require phan/phan --dev
./vendor/bin/phan

Phan 在运行前发现类型错误、未定义变量等问题;PHPStan 是同类替代。

Xdebug 调试

php.ini 启用 Xdebug 3:

xdebug.mode=debug
xdebug.start_with_request=trigger
xdebug.client_port=9003

IDE 设置断点,浏览器带 XDEBUG_TRIGGER=1 即可单步调试。

练习

  • 为 LessonService::get 写成功与「未找到」两个 Pest 测试
  • 运行 PHPCS,修复 src 下所有 PSR-12 违规
  • 用 Xdebug 断点调试一次 POST 表单处理流程

小结

Pest 保行为、PHPCS 保风格、Phan 保类型、Xdebug 查运行时。 下一课框架生态。

加载本节练习…
← 上一课性能与运维
下一课 →框架生态