PHP & Codeigniter - 如何将参数传递给模型?

2022-08-30 23:15:44

我使用以下代码从控制器中初始化模型:

$this->load->model('model_name');

是否可以以某种方式修改上面的行,以便模型构造函数接收参数?我想在模型构造函数中使用以下代码:

function __construct($param_var) {
   parent::Model();

   $this->$param_var = $param_var; //I'm not even sure this works in PHP..but different issue
}

这将非常有用,这样我就可以重用我的模型类。谢谢。

更新:(从其中一个答案中,我原来的问题解决了。谢谢!只是为了解释为什么我想这样做:这个想法是能够重用一个模型类。因此,基本上,为了给出一个简单的示例,我希望能够将一个“order_by”变量传递给模型类,以便我可以重用模型类中的逻辑(并动态更改sql中的order-by值),而无需创建单独的类或单独的函数。

这是糟糕的设计吗?如果是这样,你能解释一下为什么你不会做这样的事情,以及你会怎么做吗?


答案 1

不能通过函数传递参数。您必须执行如下操作:load

$this->load->model('model_name');
$this->model_name->my_constructor('stuff');

在模型中:

function my_constructor($param_var) {
...
}

对更新的响应:

您可以在调用模型函数时传递order_by值。我假设在控制器操作中,您有类似“只需将order_by参数添加到此函数”之类的内容。IMO 这使您的模型逻辑更加灵活/可重用,因为您执行此操作的方式,我假设在构造函数中设置order_by将为每个函数设置order_by值。$this->model_name->get($my_id);


答案 2

我明白你对此的理由,但我是否可以建议查看对象关系映射以满足您的数据库需求。有一个用户制作的CodeIgniter ORM库,叫做DataMapper,我最近一直在使用。您可以将控制器中的表用作对象,这可能更适合您的问题。


推荐