0

CodeIgniter でオブジェクトのメソッドを直接呼び出せないのはなぜですか?

例えば:

$campaign = $this->Campaign_model->get_campaign_from_id($campaign_id);
$campaign->load_settings(); // returns error: Call to undefined method stdClass::load_settings()

Campaign オブジェクトは正しく作成されていますが、クラス内にある場合でもメソッドを呼び出すことができません。

呼び出している Campaign_model メソッドは次のとおりです。

function load_settings()
{
    echo "test";
    exit;
}

どうすればこの種の操作を行うことができますか?基本的なオブジェクト ロジックを尊重していたと思いますが、機能させることができません。

4

1 に答える 1

0

CodeIgniterモデルは単なる関数のコレクションであり、各モデルのインスタンスは1つだけです。あなたは「モデルオブジェクト」を返さない、それはそれがどのように機能するかではない。

返される「オブジェクト」get_campaign_from_idは単なる通常のPHPオブジェクトであり、モデルとは何の関係もありません。

オブジェクトに対して関数を呼び出すことはできませんがstdClass、そのプロパティを編集できる関数に渡すことはできます。

// in PHP5 objects are automatically passed by reference
function load_settings($obj){
    $obj->test = '123';  // edit a property on the object
}
于 2012-11-07T17:38:25.917 に答える