2016-07-06 53 views
2

我想使用OOP概念使用PHP构建简单的博客应用程序。所以基本上我有一个Blog类和一个数据库类。在Blog类中,我有一个名为“createANewBlog()”的方法,它接受博客文本和数据库连接。例如:在OOP应用程序中放置查询的正确位置

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; 
} 

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

+0

在控制器中组织代码并在方法内部进行查询并将数据返回给视图总是一个好习惯。这也取决于你如何构建你的应用程序。但是查询和其他大代码(数据过滤,语句等)的正确位置总是更好地将它们保存在用于特定视图的控制器的方法内。以MVC框架为例。 –

回答

4

你的结构是一些什么权利,但最好的做法是根据他们的工作孤立每件事情。

所以会有以下的事情。

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

DAO(数据访问对象)是一个对象,它提供一个抽象的 接口到数据库。

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


的上面的东西的用途是如下,

  1. 模型应包含实体的与获取和设置方法字段/属性。
  2. 数据库连接类应该只包含连接数据库的方法/逻辑。
  3. DAO类应该包含数据库操作的所有逻辑。
  4. 控制器应该在视图/模型/ DAO之间有管道。
  5. 视图应该只包含呈现数据而不写入业务逻辑的代码。

这样,您将保持它的简单,坚固耐用,易于维护。

+0

尼斯解释哥们!来自我的+1! ;) –

+0

谢谢老兄:) –

+0

非常感谢你:) – jahirS

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文件..

然后在视图文件,你只需要调用$连接 - >查询()来查询数据库

THADAAAAA!

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

相关问题