我使用以下代码从我的控制器中初始化模型:
$this->load->model('model_name');
Run Code Online (Sandbox Code Playgroud)
是否有可能以某种方式修改上面的行,以便模型构造函数接收参数?我想在模型构造函数中使用以下代码:
function __construct($param_var) {
parent::Model();
$this->$param_var = $param_var; //I'm not even sure this works in PHP..but different issue
}
Run Code Online (Sandbox Code Playgroud)
这将非常有用,以便我可以重用我的模型类.谢谢.
更新:(从其中一个答案,我原来的问题解决了......谢谢!)只是为了解释我为什么要这样做:想法是能够重用模型类.所以基本上给出一个简单的例子我希望能够将"order_by"变量传递给模型类,这样我就可以重用模型类中的逻辑(并动态地更改sql中的order-by值)而不必创建单独的类或单独的函数.
这是一个糟糕的设计?如果是这样,请解释为什么你不会做这样的事情以及你将如何做呢?
jim*_*myi 21
您无法通过该load函数传递参数.你必须做的事情如下:
$this->load->model('model_name');
$this->model_name->my_constructor('stuff');
Run Code Online (Sandbox Code Playgroud)
在模型中:
function my_constructor($param_var) {
...
}
Run Code Online (Sandbox Code Playgroud)
对更新的回应:
您可以在调用模型函数时传递order_by值.我假设你的控制器动作,你有类似的东西,$this->model_name->get($my_id); 只需添加你的order_by参数到这个功能.IMO这使得您的模型逻辑更灵活/可重用,因为您的方式,我假设在构造函数中设置order_by将为每个函数设置order_by值.
我明白您的理由,但我可以建议您查看对象关系映射来满足您的数据库需求。我最近一直在使用CodeIgniter 的一个名为DataMapper的用户制作的 ORM 库。您可以在控制器中使用表作为对象,它可能更适合您的问题。
| 归档时间: |
|
| 查看次数: |
28635 次 |
| 最近记录: |