0

我在 PHP 中有这个父类:

 class parentClass{
    public $table;

    public function __construct(){
       $this->table = "my_parent_table";
    }

    public function getName($id) {
      $strQuery = "SELECT name FROM $this->table WHERE id=$id";

      $result = mysql_query($strQuery);
      if ($result) {
         $row = mysql_fetch_object($result);
         if ($row) {
             return $row->name;
          } else {
             return false;
          }
      } else {      
         return false;
      }
    } 
 }

而且我还有另一个类继承了这个:

 class childClass extends parentClass{
     public $table;

     public function __construct(){
       $this->table = "my_child_table";
     }
 }

然后在另一个文件中我正在做:

 $myObj = new childClass();
 $name = $myObj->getName('1');

现在的问题是 getName 函数有一个空表,所以变量 $this->table 为空,而我希望它是 ""my_child_table" 只要我有一个 childClass 对象。

有谁知道我做错了什么?提前致谢

4

1 回答 1

1

不确定,但这看起来很棘手:

class childClass extends parentClass{
     public $table;

parentClass已经定义了 a ,因此在$table子类中重新声明它很可能会破坏父类的版本。您必须在此处删除声明。此外,公共可见性并不能很好地封装状态。改为在父级中使用protected

    public function __construct()
    {

您应该在parent::__construct()此处添加(除非 parent 仅设置$this->table,但即使这样添加也很好)

        $this->table = "my_child_table";
    }
}
于 2012-06-20T10:45:50.970 回答