アルゴリズムから始める PHP 入門
PHP を使ってアルゴリズムとデータ構造を TDD で学ぶシリーズです。
章構成
第 1 部: 基本
第 2 部: データ構造
第 3 部: ソートと文字列
第 4 部: 高度なデータ構造
Python 版との違い
| 概念 |
Python |
PHP |
| 型宣言 |
型ヒント(任意) |
declare(strict_types=1) + 型宣言(強制) |
| 静的メソッド |
@staticmethod def method(): |
public static function method(): type |
| テスト |
pytest |
PHPUnit 11 |
| DataProvider |
@pytest.mark.parametrize |
#[DataProvider('method')] |
| 整数除算 |
x // y |
intdiv($x, $y) |
| 文字列補間 |
f"{x}" |
"{$x}" / sprintf() |
| 配列参照渡し |
なし(リストは参照型) |
array &$a(参照渡し) |
| None |
None |
null |
| 例外 |
class MyErr(Exception) |
\UnderflowException / \OverflowException |
| 列挙型 |
Enum クラス |
enum BucketStatus { ... } |
実装コード
実装コードは apps/php/ にあります。
環境
- PHP: 8.5.x
- テストフレームワーク: PHPUnit 11
- Nix devShell:
.#php
参考文献
- 『新・明解 Python で学ぶアルゴリズムとデータ構造』 — 柴田望洋
- 『テスト駆動開発』 — Kent Beck