変数$ userIDのユーザーID値をModelクラスClientmodelの関数に渡したいとします。関数はget_username()ですが、モデルで変数をパラメータとして受け入れるためにその関数を定義する必要がありますか?だから.. get_username($ userID)?ちょうどコードイグナイターでどのように推奨される方法を知りたいですか?コードイグナイターでモデル関数に値を渡す方法
ありがとうございます!
タリク
変数$ userIDのユーザーID値をModelクラスClientmodelの関数に渡したいとします。関数はget_username()ですが、モデルで変数をパラメータとして受け入れるためにその関数を定義する必要がありますか?だから.. get_username($ userID)?ちょうどコードイグナイターでどのように推奨される方法を知りたいですか?コードイグナイターでモデル関数に値を渡す方法
ありがとうございます!
タリク
これは本当にモデルを使用するかによって異なります。時間のほとんどは、それがメソッドのパラメータを持っている意味をなすとするたびにすることを使用します。モデルは「ステートフル」であるためには一方
// Model
function get_username($userID)
{
// do something with $userID
}
// Controller
$this->some_model->get_username($some_id);
が、時にはそれが理にかなって - あなたを行います持っている一つコントローラあたりのユーザーIDは?それは複数のものになるだろうか?そのモデルの多数のメソッドにuserIDが必要ですか?そして、多分これが代わりに意味になります:デフォルト引数が遊びに来るとき、あなたは何度も使用する予定の1つのユーザーIDを持っていること、
// Model
function set_userid($userID)
{
$this->userID = $userID;
}
function get_username()
{
// do something with $this->userID
}
// Controller
$this->some_model->set_userid($some_id);
$this->some_model->get_username();
他の回、時にはあなたが別の値を使用する必要があり、それは次のようになります。
// Model
function set_userid($userID)
{
$this->userID = $userID;
}
function get_username($userID = NULL)
{
if($userID === NULL) $userID = $this->userID;
// do something with $userID (not $this->userID)
}
// Controller
$this->some_model->set_userid($some_id);
$this->some_model->get_username();
ソリューションは、それだけで基本的なPHPですが、どのような方法でCodeIgniterの特定ではありません。あなたのモデルはclassであり、get_username()
はfunctionであり、それにはargumentsが必要です。
それを行うための最も基本的な方法はこれです:(あなたがここにかかわらず、デフォルトを必要としない場合があります)
// Model
function get_username($userID)
{
// do something with $userID
}
// Controller
$this->some_model->get_username($some_id);
はそうあなたが$userID
が渡されていない場合にどうするかを決めることができますについてdefault argumentsあなたが読んでいることを確認し、値が有効であることを確認してください。
'function get_username($ userID = $ this-> userID)'が正しくないと、エラーが発生します。さもなければ、その第2のコードブロックで 'set_userid()'を使うことを強制するべきではないという点を除いて、良い点は変数が引き渡されることを許します。 –
@Wesley RE:パラメータのデフォルトは次のとおりです。うんざり、普通、間違っている間違い。今修正されました。 RE:2番目のコードブロック:必ずしも、誰かが関数の内容を直接変更することを許可したくないということが考えられる場合もありますが(最後のブロックが何であるか)、私は残しておきます大部分の時間は私があなたに同意する(実際には、状態を保持し、できるだけ避けているので、おそらくパラメータを追加するだけです)。 – cwallenpoole
ええ、私は同意する、それは異なります。私は、5分の編集ウィンドウが切れるとすぐに、2枚目の議論が議論の余地があると気づいた。私はこれがOPの頭を越えていないことを願っている... –