声明为属性或传递为方法参数

时间:2013-05-28 15:03:40

标签: php

我正在写一个MySQL类。我注意到这已经给我带来了麻烦。我需要将表作为函数的参数传递给函数或声明属性并在执行之前先执行setter方法。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

->fetchByUniqueId()方法严重依赖$table;如果你通过->table属性使它可用,那么你隐藏了那个使你的代码“闻到”的依赖。

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

如果$table成为类构造函数的依赖项,那么它就是一个例外,那么它不应该在从它创建的实例的整个生命周期内发生变化。