本文目录导读:

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 的核心概念有扎实的掌握。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播