protectedの勘違い

protectedで定義した変数は、そのクラスを継承したクラスからは参照できますが、継承していないクラスからは参照できません。これはメソッドも同様です。

私は、クラスAにprotected変数がある場合、クラスAを継承したクラスB、クラスBを継承したクラスCからも参照できるものだと思っていました。しかし実際は、孫クラスにあたるクラスCからは参照できませんでした。よくドキュメントに書いてある、サブクラスというのは、子クラスのみをさしていたのですね。

javaのときはどうだったか覚えてないですが、phpではこうでしたってことでメモ。

ちゃんこダイニング 若

夜になると寒いって思うような気候になってきたので、お鍋を食べてきました。
前々からうまいよっていう噂を聞いてきた、ちゃんこダイニング若で。

お鍋は二人前を三人で食べてもいいようなボリューム。
サイドメニューも美味しかったです。エビマヨ、手羽先も美味しかった。
どの料理もボリュームがあるので、少なめの品数で注文することをおすすめします。

findManyToManyRowsetの盲点

findManyToManyRowset はとても便利なメソッドです。

以下の様なテーブル構成の場合

・テーブルA
・テーブルB (テーブルAの子テーブル)
・テーブルC (テーブルBの子テーブル)

findテーブルCViaテーブルB
または
findManyToManyRowset(‘テーブルC’ , ‘テーブルB’)
と書くことで、Cの情報を1行で取得することができます。

以前の記事でこの場合、テーブルBのデータも参照のみ可能な状態で、
Zend_Db_Table_Rowsetクラスに含まれていることを書きました。
しかし、テーブルCのデータを更新して、save()した後、テーブルBのデータは、オブジェクトの中から消えてしまいます。
もともとテーブルCのRowsetオブジェクトなので、理解できるのですが、
予想していない挙動だったので、ここにメモしておきます。

参照するなら、テーブルCの情報を更新する前に。ここ大事です。