PHP模型:一个或多个数据库操作的设置器


PHP models : one or more setters by database action?

我在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_account()不是那么清楚,函数keep_account_pending()是我觉得更好的命名方式。

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

使用指示方法将执行的操作的名称可以提高代码的可读性。

随着代码越来越大,很容易忘记哪个数字代表什么状态。名称不会发生这种情况,因为名为 reject_account() 的方法将指示帐户将比作为参数传递给函数的数字更好地被拒绝。

此外,当其他人处理您的代码时,他们将更容易理解调用方法时发生了什么。话虽如此,最好理解当看到称为accept_account()的方法时接受客户帐户,然后看到set_account_state(1)