访问类外的变量

时间:2013-08-18 10:31:41

标签: function class variables constants global

我会尽力解释我的问题。 我有一个带有函数的类,一个函数的目的是从数据库中获取信息并显示它。 一切都按预期工作,但现在我需要访问一些变量,在我的课外使用它们在另一个文件中,我不知道应该怎么做,所以我想知道是否有人可以指导我。

        function fetch(){
    $this->_select_query = '
                            SELECT movies_id, movies_title, movies_director, movies_year, movies_category_id, cat.name 
                            FROM movies 
                            LEFT JOIN cat ON id = movies_category_id' 
                            or die(mysqli_error());

      $this->_stmt = $this->_mysqli->prepare($this->_select_query);
      $this->_stmt->execute();
      $this->_stmt->bind_result($this->_select_id, $this->_select_title, $this->_select_director, $this->_select_year, $this->_select_category_id, $this->_select_category_name);
      $this->_stmt->store_result();
        while($this->_stmt->fetch()){
            echo '<tr>
                    <td>'.$this->_select_title.'</td>
                    <td>'.$this->_select_director.'</td>
                    <td>'.$this->_select_year.'</td>
                    <td>'.$this->_select_category_name.'</td>
                    <td><a href="index.php?form=edit&amp;id='.$this->_select_id.'" title="Edit movie">Edit</a></td>
                    <td><a href="">Delete</a></td>
                  </tr>
            '; 
        }
}//close function fetch

函数fetch是在一个名为movies的类中,现在在另一个页面上我有一个表单来编辑(更新)这些电影,我想返回标题,导演等...在那个表单中,所以很容易注意到你正在改变什么。

现在我知道如何使用php程序执行此操作,但不使用面向对象的php。 你也可以在这里注意到我回显了整个表格(表格的另一部分是在一个不同的页面上) 因此我不能使用$ movies-&gt; fetch()

我希望有人可以给我一些关于我的问题的更多信息,因为我觉得此时有点迷失,虽然在相同的代码上盯着太多,你可能会感到困惑和混淆。

亲切的问候

编辑:我应该使用全局变量,常量吗?

1 个答案:

答案 0 :(得分:0)

你应该重构你的代码。

正如你所说,你不能做$movies->fetch(),因为它与表格相呼应。这是制动Single Responsibility Principle的一个迹象。您应该将您的函数分为两个:一个获取(并返回)数据的函数,另一个将数据作为参数并返回包含数据的表。 这样,当您想要获取编辑表单的值时,可以重用第一个。

由于您有程序背景,我建议您创建一个代表具有必填字段的“电影”的新类。然后,对于表中的每一行,您应该创建该类的实例并填充这些字段,并最终返回所有这些实例。

很抱歉没有发布任何代码,我意识到这会更容易。