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 模型只是函数的集合,每个模型只有一个实例。您不返回“模型对象”,这不是它的工作方式。

您返回的“对象”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 回答