如何将值传递给代码点火器中的模型函数

时间:2011-07-12 17:21:38

标签: codeigniter

我想将变量$ userID中的用户标识值传递给Model类Clientmodel中的函数。函数是get_username(),现在在模型中我是否必须定义该函数以接受变量作为参数? so .. get_username($ userID)?只是想知道代码点火器的推荐方法是什么?

谢谢!

塔里克

2 个答案:

答案 0 :(得分:3)

这实际上取决于您使用该模型的内容。大多数情况下,为方法设置一个参数并每次都使用它是有意义的:

// Model
function get_username($userID)
{
    // do something with $userID
}

// Controller
$this->some_model->get_username($some_id);

另一方面,有时模型有“有状态”是有意义的 - 每个控制器是否有 一个 用户ID?它会不止一个?您是否需要该模型的大量方法中的userID?那么也许这将有意义:

// 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();

其他时候,您可能有一个计划一次又一次使用的用户ID,但有时您需要使用另一个值,即默认参数发挥作用时:

// 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();

答案 1 :(得分:2)

解决方案不是Codeigniter的任何特定方式,它只是基本的PHP。您的模型为class,而get_username()function,需arguments

最基本的方法是:

// Model
function get_username($userID)
{
    // do something with $userID
}

// Controller
$this->some_model->get_username($some_id);

请务必阅读default arguments,以便在未通过$userID的情况下决定该怎么做(尽管您可能不需要默认值),并确保检查该值是否有效