【发布时间】:2018-06-07 21:05:08
【问题描述】:
我在 php 中使用 MVC 模型。 控制器正在向模型发送数据,有时它期望得到一些回报。 当我写我的网页时,我添加了需要来自模型的更多信息的实用程序。大多数情况下,它使控制器向模型接口传递更多参数。问题是模型接口大多只将这些变量传递给另一个方法,所以参数列表应该在几个地方改变。这显然是不可接受的,那么应该如何处理呢? 我认为传递数据数组不是最好的主意,因为它会使它无法控制。任何东西都可以添加任何东西。 目前我正在使用另一种解决方案。我创建了一个特殊的类来处理这个。它们中的每一个都派生自一个包含类似“getAsArray()”方法的类。我认为为几乎每个控制器的需求创建一个特殊的类是浪费时间和资源,所以这是我的问题:这个问题的最佳解决方案是什么?有哪些共同的想法?
控制器
public function addUser(){
$this->load->model("User");
$username = $this->someWayOfGettingData("username");
$email = $this->someWayOfGettingData("email");
$password = $this->someWayOfGettingData("password");
$this->User->insert($username, $email, $password);
}
型号
private function someMethodOperatingOnData($username, $email, $password){
$answer = $this->queryAdd($username, $email, $password);
return $answer;
}
public function insert($username, $email, $password){
return $this->someMethodOperatingOnData($username, $email, $password);
}
问题是什么:当我决定添加有关用户的其他信息(例如性别)时,我必须更新
中的参数列表insert($username, $email, $password);
someMethodOperatingOnData($username, $email, $password);
queryAdd($username, $email, $password);
到:
insert($username, $email, $password, $gender);
someMethodOperatingOnData($username, $email, $password, $gender);
queryAdd($username, $email, $password, $gender);
所以我必须更新每个传递这些变量的函数。我可以使用数组:
insert($arrayOfData);
someMethodOperatingOnData($arrayOfData);
queryAdd($arrayOfData);
但任何东西都可以添加或删除这些变量,我不希望这种情况发生。
【问题讨论】:
-
您能否举例说明您认为是什么问题,很难准确理解您看到的问题是什么。
-
这与 MVC 无关……当然你甚至不知道 MVC 是什么……所以你怎么会知道。
-
哦,我看到了伟大的捷列斯科说话了。你没有以任何方式帮助我,但你侮辱了我。伟大的!感谢您的帮助!
标签: php oop parameter-passing