ホームページ >バックエンド開発 >PHPチュートリアル >codeigniter では、Model コンストラクターはパラメーターを受け取ることができますか? 受け取れる場合、それを呼び出す方法は何ですか?

codeigniter では、Model コンストラクターはパラメーターを受け取ることができますか? 受け取れる場合、それを呼び出す方法は何ですか?

WBOY
WBOYオリジナル
2016-06-13 12:22:121079ブラウズ

codeigniter では、Model コンストラクターはパラメーターを受け取ることができますか? 受け取った場合、それを呼び出す方法は何ですか?
タイトルの通り

codeigniter では、Model コンストラクターはパラメーターを受け取ることができますか?また、受け取れる場合、それを呼び出す方法は何ですか?


例:
class Test extends CI_Model{

function __construct($id){
$q = $this-> db ->query("Select * From test Where id='".$id."'")->row_array();
$this->name = $q[ " name"];
}

}

呼び出し時にモデルに ID を渡して直接初期化する方法
$this->load->model( "Test" , "mytest");
-----ソリューションのアイデア----------------------
そのモデルメソッドの書き方を見てください
-----解決策のアイデア----------------------
はい?
$this->load->model("Test", "mytest");
このモデル メソッドの定義を指定しましたか?
------解決策----------------------
CI はパラメータの受け渡しをサポートしていないようですこのように
------解決策のアイデア----------------------
できません
まず第一に、loader->model メソッドには初期化値を渡すためのパラメーターがありません。

/**<br />	 * Model Loader<br />	 *<br />	 * This function lets users load and instantiate models.<br />	 *<br />	 * @param	string	the name of the class<br />	 * @param	string	name for the model<br />	 * @param	bool	database connection<br />	 * @return	void<br />	 */<br />	public function model($model, $name = '', $db_conn = FALSE)


次に、このメソッドでモデル クラスがどのようにインスタンス化されるかを見てください。
			require_once($mod_path.'models/'.$path.$model.'.php');<br /><br />			$model = ucfirst($model);<br /><br />			$CI->$name = new $model();<br /><br />			$this->_ci_models[] = $name;<br />


ほら、単に require してから new するだけで、パラメーターはありません。
これは IoC のコンテナに似ていますが、残念ながらあまりにも退屈です。投稿者はいくつかの変更を加えることができます
<br />$ref = ReflectionClass($modelName);<br />$modelInstance = $ref->newInstanceArgs(初始化的参数); <br />



-----解決策のアイデア------ - ---
これを直接変更するなら、init メソッドを書いたほうが良いのではないかといつも思っています

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。