できる!...からってするなよ!PHPの連想配列乱用!

※以下ジョークを含んでおり、間違った覚え方をしても一切責任を負いません。

僕は今半年ほどPHPでゲームのサーバーのプログラムを書いていますが、まだまだ新米なのでプロジェクトのコードという達人のプログラムを読みながら日々勉強している身です。

達人のコードを見て学んだテクニックを共有したいと思います。 連想配列をあたかもクラスであるかのように使う高等テクによって、定義情報をもデータとして扱うことに成功しているコードに出会いました。

これが↓

class User_table
{
    private $user_id = 0;
    private $user_name = '';
    
    public function __construct($user_id, $user_name)
    {
        $this->user_id = $user_id;
        $this->user_name = $user_name;
    }
}

$user = new User_table(76213846, 'まさる');

こうなる↓

$user = [
    'user_id' => 76213846,
    'user_name' => 'まさる'
];

脅威の行数ですよね!

これのメリットとしては、

  • 12行で書いていたものが一時的にたった4行で書けるようになる
  • 定義情報をデータと一緒に生成するので使いまわすときにコピペコーディングが可能になり、雪だるま式にコード量を増やすことができる
  • すべての要素がPublicになるため、コードが複雑になったときにいろいろなことを考えながらコーディングすることができる
  • 超マニアックな条件の時なら誰にも気づかれずunsetして要素を消したり追加したりでき、後々楽しいデバッグ作業ができる
  • 実行時の条件によって要素を付け替えることができ、誰にも全体像を悟られることがない
  • IDEの入力補完が一切機能しなくなり、どんな要素があるのかを調べるために無駄に検索能力が向上する

実務で使うと文字通り脅威になると思いますのでぜひ!