MW211 EXIT

devlog
PHP/private宣言忘れ
2012年05月23日
┌──────────────────────────────────────┐
│class クラス {                                                              │
│  private $変数;                                                            │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
「$this->変数」の場合、「public」や「private」が宣言されていないと
エラー(Notice)になる…、と思っていたのだが、参照(echoとか)は確かにエラーとなる。
しかし、代入する分にはエラーとならない。
┌──────────────────────────────────────┐
│class クラス {                                                              │
│//private $変数;                                                            │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
しかも、代入して以降は参照もできてしまう。
なんと、外部からも参照できてしまうのだ。
つまり、下記のようにpublic宣言したのと同じような動きとなるわけだ。
┌──────────────────────────────────────┐
│class クラス {                                                              │
│  public $変数;                                                             │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
てっきり、エラー(Notice)で警告してくれるものだとばかり思っていたから
かなり意外だった(気をつけなければ)。
分類:PHP