PHP マジック


自分の感性や既成概念を覆す、非常に奇怪なコードを目にする。
どんな悪質なコードでも保守を継続しなければならず、常に苦しめられている。
それらのことを「マジック」と呼ばれ恐れられている。


一例を挙げよう。
PHP には、定数を定義するための関数 define というものがある。
これにマジックを施し、独自に拡張しているように見せているコードがあった。

class define {
 function define($a, $b) {
    :
 }
}

define(NAME, "foo");         // 既存の関数 define
new define(NAME, "bar");     // 新しく作ったクラス define
  • "define" は予約語ではない。
  • 関数名とクラス名は被ってもよい。

などが作用して、動いているようだ・・・。マジックとしか言いようがない。

(つづく)