Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP模型:通过数据库操作设置一个或多个setter?_Php_Codeigniter_Model View Controller_Model_Naming - Fatal编程技术网

PHP模型:通过数据库操作设置一个或多个setter?

PHP模型:通过数据库操作设置一个或多个setter?,php,codeigniter,model-view-controller,model,naming,Php,Codeigniter,Model View Controller,Model,Naming,我正在CodeIgniter PHP项目中使用MVC模式,我想知道构建模型方法的最佳方法是什么,以确保代码的可读性和可伸缩性 简而言之,这样做更好吗 public function set_account_state($new_state) { // UPDATE a database record state to $new_state [0, 1 or 2] } 还是这个 public function reject_account() { // UPDATE a data

我正在CodeIgniter PHP项目中使用MVC模式,我想知道构建模型方法的最佳方法是什么,以确保代码的可读性和可伸缩性

简而言之,这样做更好吗

public function set_account_state($new_state) {
    // UPDATE a database record state to $new_state [0, 1 or 2]
}
还是这个

public function reject_account() {
    // UPDATE a database record state to 0  
}

public function accept_account() {
    // UPDATE a database record state to 1
}

public function pending_account() {
    // UPDATE a database record state to 2
}
或者另一种方式?
此外,在这种情况下,函数命名是否有良好的实践

function set_account_state($state) 
当您只有一个任务,即更改状态时,这会更好。 但是如果将来在更改帐户状态之前您可能需要执行不同的任务,那么您需要三种不同的方法。 您仍然可以使用原始方法来更改帐户的状态,并从三个方法调用它

函数命名应包括带名词的动词,以使其更清晰。
函数pending\u account()不是很清楚,函数keep\u account\u pending()是我觉得更好的命名方式。

在我看来,第二种方式是更好的方式

使用指示方法将做什么的名称可以提高代码的可读性

随着代码变大,很容易忘记什么数字代表什么状态。名称不会出现这种情况,因为名为
reject\u account()
的方法将指示拒绝帐户,而不是将数字作为参数传递给函数


另外,当其他人处理您的代码时,他们将更容易理解调用方法时发生的事情。话虽如此,当人们看到名为
accept\u account()
的方法时,最好理解客户机帐户被接受,然后当人们看到
set\u account\u state(1)
时,我同意这个答案。帐户状态管理应该放在一个地方。
$state
的有效值可以由常量提供服务,从而提高可读性和对参数值应该/可能是什么的理解。这并不意味着您不能或不应该在类中创建私有或受保护的“helper”函数来处理每个特定状态。但是公共接口应该是一个单一的功能。