ORM クラスを使用しています。DB 内の各テーブルは、ORM クラスのサブクラスを使用して表されます。
私は PHP インターフェイスを使用しており、ORM サブクラスの一部で必要なメソッド (db フィールド) を指定したいと考えています。インターフェイスに関数を追加するには、メソッドをクラスで明示的に宣言する必要があります。ただし、これらのメソッドは、実行前の ORM は DB 構造を認識できないため、実際の機能については魔法のメソッドに依存しています。
私が想像していたのは、親クラスから結果を返すそれぞれの関数を作成することでした。
検討:
class ORM
{
// Library code here. Can't change this.
public function __call($name, $arguments)
{
return call_user_func_array(array($this, $method), $arguments);
}
}
interface MyTableInterface
{
public function myDbField();
}
class MyTable extends ORM implements MyTableInterface
{
public function myDbField()
{
return parent::myDbField();
}
}
このコードでparent::myDbField()
、クラスから呼び出すとMyTable
、正しく ORM クラスに移動し、__call
マジック メソッドを使用します。ここで$this
equalsを実行すると、独自のロジックを開始して DB から情報を取得する代わりにMyTable
、クラスから元の関数が呼び出されます。MyTable
この再帰を回避するにはどうすればよいですか?