我正在写一个MySQL类。我注意到这已经让我困惑了。例如,我需要传递表作为函数的参数或声明属性,并在执行之前先执行setter方法。
public $table;
public function fetchByUniqueId($table,$id){
$query = "SELECT * FROM etc";
}
这样想。$table
是否告诉你MySQL类的特定实例或函数执行其操作所需的数据?
也使代码更容易理解?在这种情况下,将表名作为参数传递比将其设置为类的属性更明确地说明需要什么。
属性应该帮助定义对象实例的特定细节。它告诉我们一个对象是什么或者一个对象有什么。您正在创建的MySql
类不代表一个特定的表,因此它不应该是该类的属性。
->fetchByUniqueId()
方法对$table
有较强的依赖性;如果你通过->table
属性让它可用,你就隐藏了那个让你的代码"臭"的依赖。
一个例外是,如果$table
是类构造函数的依赖项,那么在从它创建的实例的整个生命周期中,它不应该改变。