私はCodeIgniterを使用していて、を拡張しCI_Model
ました。したがって、すべてのモデルが拡張されMY_Model
ます。
これは正常に機能します。
問題は、すべてのモデルにセカンダリ関連オブジェクトがあることです。基本的に、モデル(通常はデータベース)から渡されたデータを取得し、データベース内のその行を表すクラス。
だから何かのような
class Product_Model extends MY_Model{
public function get($id){
//....
return new Product($query->row());
}
}
class Product{
public function __construct(stdClass $data){
//....
self::$ci =& get_instance();
self::$model = self::$ci->products;
}
}
ここで、エイリアスを使用してProduct_Modelをロードします$this->load->model('product_model', 'products');
したがって、self::$model = self::$ci->products;
しかし今、私はすべてのクラスProduct
が拡張するような基本的なクラスが欲しいです。
これに更新するロジックが含まれている必要がありますself::$model
。
しかし、モデルのエイリアスを知る必要があります。
何かのようなもの
self::$model = self::$ci->{instantiator_variable_name($this)}
これはself::$model = self::$ci->products
明らかにその関数は存在しませんが、それは私がやりたいことを示しています。
私が作成した、Product
または同様のものをどこにでも持っていることができることを私は知っています
$row = $query->row();
$row->model = $this->ci->products;
return new Product($row);
しかし、できれば自動化したいと思います。