行ごとに異なるクラスを返すZend_Db_Tableを作成するにはどうすればよいですか。
例UserTableにはid、name、typeがありますTypeにはクラス名(admin、clientなど)が含まれます
クラスadmin、clientは、すべてuserのサブクラスです。
fetchを呼び出す場合、db内の対応する値に応じて、管理者オブジェクトまたはクライアントオブジェクトを取得する必要があります。
行ごとに異なるクラスを返すZend_Db_Tableを作成するにはどうすればよいですか。
例UserTableにはid、name、typeがありますTypeにはクラス名(admin、clientなど)が含まれます
クラスadmin、clientは、すべてuserのサブクラスです。
fetchを呼び出す場合、db内の対応する値に応じて、管理者オブジェクトまたはクライアントオブジェクトを取得する必要があります。
class Your_Db_Table_Row extends Zend_Db_Table_Row_Abstract
{
}
class Your_Db_Table extends Zend_Db_Table_Abstract
{
protected $_rowClass = "Your_Db_Table_Row";
}
また
new Your_Db_Table(array("rowClass" => "Your_Db_Table_Row");
したがって、テーブル サブクラスから行セットを取得すると、それに含まれる行がカスタム クラスになります。
編集
値に基づいてカスタム行を取得するには、Zend_Db_Table_Rowset_Abstract
代わりにクラスを拡張して、このメソッドをオーバーライドします。
getRow(int $position, [bool $seek = false])
また、プロパティに基づいて行クラスを実際に作成するcurrent
メソッドと、おそらく他の実装のいくつかをオーバーライドする必要があります。データの行タイプに基づいて呼び出される前に設定できる場合があります。SeekableIterator
_rowClass
_rowClass
current
現在の特定のクラスをインスタンス化し、型パラメーターに基づいて返すことができます。
代わりにコンポジションを使用することについて考えたことはありますか? それが管理者タイプか何かである場合、新しいクラスにデータを渡すだけですか?