0

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

        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->fetch()

我确实希望有人能给我一些关于我的问题的更多信息,因为我在这一点上感到有点迷茫,而且当你过多地盯着同一个代码时,你可能会感到困惑和混淆。

亲切的问候

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

4

1 回答 1

0

你应该重构你的代码。

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

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

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

于 2013-08-18T12:02:13.300 回答