Revision 1 as of 2011-02-01 08:10:50

Clear message
Locked History Actions

php/SaneTips

PHPプログラムを少しでもまともにするためのTIPS

以下は基本的にPHP 5.3以上が対象。

未定義のメンバ変数へのアクセスを検出する

ひどいことに、PHPのオブジェクトは未定義のメンバ変数に平気でアクセスできてしまう。 このデタラメな言語仕様により、スペルミスをしてもそれになかなか気がつかないということが起こりうる。

class Sample {
 public $a;
}
$sample = new Sample();
$sample->b = 123;
print $sample->b;

以下のようなクラスを作成しておき、すべてのクラスをこのサブクラスとすることにより、未定義のメンバ変数へのアクセスをチェックすることができる。

class StrictCheckClass {
  public function __get($name) {
    assert(property_exists($this, $name));
  }
  public function __set($name, $val) {
    assert(property_exists($this, $name));
  }  
}

class Sample extends StrictCheckClass {
  public $a;
}