本文目录导读:

PHP Koans 是一个帮助学习 PHP 的工具,通过一系列有意的"错误"测试来引导你逐步理解 PHP 的核心概念,以下是使用它的完整指南:
什么是 PHP Koans
PHP Koans 是一系列故意写错的 PHP 测试文件,你的任务是修复它们,每个文件都针对特定的 PHP 主题,当你正确修复后,测试就会通过。
获取 PHP Koans
从 GitHub 克隆
git clone https://github.com/CodeComputer/php-koans.git cd php-koans
使用 Composer
composer create-project codecomputer/php-koans
运行环境要求
- PHP 5.6+(建议 PHP 7.4+)
- PHPUnit 5.7+(版本不同可能有差异)
运行 PHP Koans
基础运行
php vendor/bin/phpunit
或者运行特定文件
php vendor/bin/phpunit Koans/03-strings.php
Koans 文件结构
目录结构通常如下:
php-koans/
├── Koans/
│ ├── 01-variables.php
│ ├── 02-arrays.php
│ ├── 03-strings.php
│ ├── 04-functions.php
│ ├── 05-classes.php
│ └── ...
├── vendor/
└── phpunit.xml
学习流程
第一步:查看测试文件
每个文件包含多个测试方法,这些方法故意写错。
public function testStringConcatenation() {
$string = "Hello" . " " . "World";
$this->assertEquals("Hello World", $string); // 这行是正确的
}
第二步:修复错误
找到有问题的断言并修复,常见错误包括:
// 错误示例
$this->assertEquals("World", $string); // 实际输出 "Hello World"
// 正确修复
$this->assertEquals("Hello World", $string);
第三步:运行测试
php vendor/bin/phpunit --filter testStringConcatenation
常见主题
PHP Koans 覆盖以下核心主题:
| 主题 | 文件示例 | 学习重点 |
|---|---|---|
| 变量类型 | 01-variables.php | 整数、浮点、布尔、null |
| 数组 | 02-arrays.php | 关联/索引数组、数组操作 |
| 字符串 | 03-strings.php | 字符串连接、插值、方法 |
| 函数 | 04-functions.php | 参数、返回值、作用域 |
| 面向对象 | 05-classes.php | 类、继承、接口、多态 |
| 控制结构 | 06-control-flow.php | if/else、循环、switch |
| 异常处理 | 07-exceptions.php | try/catch、自定义异常 |
进阶技巧
使用过滤运行特定主题
# 只运行数组相关的测试 php vendor/bin/phpunit --filter testArray
查看详细输出
php vendor/bin/phpunit --testdox
调试测试
在测试中添加输出:
public function testMyDebug() {
var_dump($variable); // 查看变量值
die(); // 停止执行
$this->assertEquals($expected, $variable);
}
常见问题解决
问题:找不到 PHPUnit
# 安装依赖 composer install
问题:PHP 版本不兼容
# 更新 PHP 或修改 composer.json 中的版本要求
问题:测试全部失败
检查是否修改了 Koans 目录下的文件权限,或查看是否有语法错误。
学习建议
- 按顺序学习:从最小的文件开始,逐步深入
- 先阅读再修改:理解每个测试想要验证的概念
- 主动思考:尝试预测测试会输出什么,然后验证
- 学会阅读错误:从 PHPUnit 的错误信息中获取线索
- 组合使用:结合官方文档和 Koans 一起学习
PHP Koans 是一种边做边学的极佳方式,通过修复"错误"来加深对 PHP 的理解,完成所有 Koans 后,你会对 PHP 的核心概念有扎实的掌握。