【サクッと解説】PHP 古いコードを現代的に書き換える方法

目次

1. 本記事のポイント

  • 古いPHPコードを現代的な書き方にリファクタリングするポイントを解説
  • 実行可能なコード例で、改善前後の比較と注意点を提示
  • 実務における保守・改修の判断基準や設計意図にも触れる

2. 古いPHPコードを読みやすく書き換えるには?

PHPは長い歴史を持つスクリプト言語であり、5.x以前に書かれたコードは、現在の7.x〜8.x系の文法や設計思想と大きく異なります。

特に古いPHPでは、関数乱用・グローバル変数依存・クラスの未使用・命名規則の不統一などが多く見られます。これらは保守性や可読性の低下を招き、バグやセキュリティリスクの温床となります。

実務においては、これらのレガシーコードを「すぐにフレームワークに乗せ替える」のではなく、段階的な読み替え・リファクタリングから始めるケースが多くあります。そのため、本記事では「古いコードを読みやすく、安全に現代的に書き換える」ための基本的な観点を示します。

3. 詳細解説

グローバル変数の使用を避け、明示的な引数・戻り値に書き換える

以下は典型的なレガシーPHPコード例です。

PHP
// 改善前:グローバル変数に依存
function calcTotal() {
    global $price, $tax;
    return $price + ($price * $tax);
}

$price = 1000;
$tax = 0.1;
echo calcTotal(); // 1100

このようなコードは、関数の外側にある変数の状態に依存しており、予期しない副作用が発生しやすくなります。

改善例:引数・戻り値によって依存関係を明示することで、再利用性とテスト容易性が向上します。

PHP
// 改善後:引数に明示的に値を渡す
function calcTotal(float $price, float $tax): float {
    return $price + ($price * $tax);
}

echo calcTotal(1000, 0.1); // 1100

配列アクセスからクラス・型付きオブジェクトへの書き換え

レガシーPHPでは、連想配列を多用してデータ構造を表現することが多いです。

PHP
// 改善前:配列ベースのデータ操作
$user = ["name" => "Taro", "age" => 30];
echo $user["name"];

配列は柔軟ですが、キーのミスや型の不整合が実行時エラーを招きやすくなります。

改善例:クラスを使って型と構造を明示すると、IDEの補完や静的解析も可能になります。

PHP
// 改善後:クラスを用いた明示的なデータ表現
class User {
    public string $name;
    public int $age;

    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$user = new User("Taro", 30);
echo $user->name;

関数や処理の分岐をswitchからmatch式へ(PHP 8.0〜)

PHP 8.0以降では、複数の条件分岐に対してmatch式が使用できます。これは冗長なswitch構文の代替として読みやすく、式として値を返せるのが特徴です。

PHP
// 改善前:switch構文
switch ($status) {
    case "ok":
        $msg = "正常です";
        break;
    case "error":
        $msg = "エラーです";
        break;
    default:
        $msg = "不明です";
}
PHP
// 改善後:match式(PHP8.0以降)
$msg = match($status) {
    "ok" => "正常です",
    "error" => "エラーです",
    default => "不明です",
};

4. よくあるミス・誤解・落とし穴

  • 古いコードを単純にコピペして書き換えると、依存関係の見落としや副作用の温存につながりやすい
  • クラスを導入しても、プロパティの型指定やアクセス制御(public/private)を怠ると可読性は上がらない
  • match構文はPHP 8.0以上でのみ利用可能。環境差異に注意(CI環境など)
  • グローバル関数や多段ネストされたロジックは、まず関数分割から始めると改善しやすい

5. まとめ

古いPHPコードの改善には、「読みやすさ」と「依存関係の明示」が重要です。単に書き換えるのではなく、設計意図を保ちつつ、PHPの現代的な機能(型宣言、クラス構造、match式など)を活用することで、保守性と安全性を高めることができます。

特に業務コードでは、一括刷新よりも段階的な改善が現実的であり、スモールステップでの置き換えが効果的です。

よかったらシェアしてね!
  • URLをコピーしました!
目次