在OOP应用程序中放置查询的正确位置

时间:2016-07-06 08:53:53

标签: php oop

我想使用OOP概念使用PHP构建一个简单的博客应用程序。所以基本上我有一个Blog类和一个数据库类。在Blog类中,我有一个名为" createANewBlog()"它采用博客文本和数据库连接。例如:

class Blog{
  public $id;
  public $text;

  public function createANewBlog($inText, $db)
  {
    $this->text = $inText;
    $this->id = $db->create($inText);
    return true; 
  }
} 

所以基本上这个函数调用数据库类中的create()函数来获取最后插入的Id。

class DB{
  function create($intext){
    $sql = "INSERT INTO....... ";
    then i will send the last inserted id;
  }
 } 

在索引控制器中,我将简单地创建一个博客对象并调用该方法来创建一个新对象。

现在我的问题是"它是在OOP中编码的正确方法吗?或者我可以在博客类createANewBlog()函数中调用查询,如:

createANewBlog($inText, $db){
$this->text = $inText;
$this->id = $db->execute("INSERT INTO .....");

return true;
}

请帮助我,因为我不知道在哪里放置查询的正确位置(在博客课程内或数据库类内)。

2 个答案:

答案 0 :(得分:4)

你的结构是正确的,但最好的做法是根据他们的工作隔离每一件事。

所以会有以下事情。

  1. 模型(博客课程)
  2. 数据库连接类
  3. Blog DAO Class
  4. 控制器
  5. 查看
  6.   

    DAO(数据访问对象)是一个提供摘要的对象   数据库接口。

    所以总是使用DAO在模型和数据库之间进行通信。它可能包含插入,读取,删除,查找,过滤方法/函数。

    以上事项的用途如下,

    1. 模型应包含具有Getter和setter方法的实体的字段/属性。
    2. 数据库连接类应仅包含连接数据库的方法/逻辑。
    3. DAO类应该包含数据库操作的所有逻辑。
    4. 控制器应在视图/模型/ DAO之间具有管道。
    5. 视图应仅包含用于呈现数据的代码,而无需在其中编写业务逻辑。
    6. 通过这种方式,您可以保持简单,强大和可维护。

答案 1 :(得分:1)

OOP的想法是创建出色的应用程序结构。在很棒的应用中,您需要使用模块化技术。我不会给你一些你需要遵循的大量信息。在我第一次学习OOP时,我宁愿给你一个我遵循的策略。

让我举一个代码示例!:

您正在使用数据库连接,因此创建一个将存储所有数据库连接和其他连接内容的类。

在这里我创建了一个名为connection_admin的类

Class connection_admin {

protected $_link;

//If You Delete This Everybody of the Team Will send you a serial killer to kill you ......... :v :v

    function __construct($host,$user,$pass,$db){

    $this->_link = mysqli_connect($host,$user,$pass);

        mysqli_select_db($db,$this->_link);

    }

    public function query($sql){

        $result = mysqli_query($sql);
        $this->confirm_query($sql);

        return $result;
    }

    public function confirm_query($sql){

        if (!$sql) {
            # code...
            die('Query Failed'. mysql_error());
        }
    }

    public function count_matched_id($queried_output){

         return mysqli_result($queried_output, 0);

    }



}

然后我创建了一个全局对象,如" init.php" ,我将在我的项目中随处可见。

<?php
include 'function/admin_connection.php';

$Connection     = new connection_admin('localhost','root','','my_cart');

现在是时候在所有.php文件中要求它们了。

然后在视图文件中,您只需要调用$ Connection-&gt; query()来查询数据库

THADAAAAA !!

  

注意:它不能很好地利用php的OOP功能,但它会教它   你如何使用OOP。之后尝试遵循MVC结构。