2

我正在编写一个 MySQL 类。我注意到这已经让我感到困惑。我需要将例如表作为参数传递给函数或声明一个属性并在执行之前先执行一个 setter 方法。

public $table;
public function fetchByUniqueId($table,$id){
    $query = "SELECT * FROM etc";
}
4

2 回答 2

2

这样想吧。是否$table可以告诉您有关 MySQL 类的特定实例或函数执行其操作所需的数据?

还有哪些让代码更容易理解?在您的情况下,将表名作为参数传递比将其设置为类的属性更明确需要什么。

属性应该有助于定义有关对象实例的特定细节。它告诉对象“是什么”或对象“具有”什么。您正在创建的MySql类不代表一个特定的表,因此它不应该是该类的属性。

于 2013-05-28T15:25:37.553 回答
1

->fetchByUniqueId()方法对 ; 有硬依赖$table。如果您通过该属性使其可用->table,则您隐藏了使您的代码“有味道”的依赖项。

最好的办法是尽可能在方法签名中定义所有直接依赖项。

一个例外是 if$table是类构造函数的依赖项,然后它不应该在从它创建的实例的整个生命周期内改变。

于 2013-05-28T15:30:55.440 回答