2016-07-06 6 views
2

OOPの概念を使用してPHPで簡単なブログアプリケーションを構築したいと考えています。だから基本的に私はブログクラスとデータベースクラスを持っています。 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()関数内でクエリを呼び出すsould:私は分からないように私を助けてください

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を初めて学んだときに従った戦術をあなたに与えるつもりです。

あなたは、データベース接続で作業している

!:私はコードをあなたに例を挙げてみましょう、ので、すべてのデータベース接続と他の接続のものを格納するクラスを作成します。ここで

私はその後、私は私のプロジェクトでどこでも含めるよ「init.php」のようなグローバルオブジェクトを作成し

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

    } 



} 

connection_adminというクラスを作成しました。データベース

を照会する

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

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

そして今、それはすべての.phpファイルでそれらのすべてを必要とする時が来た...

が続いビューファイルにあなただけの$ Connection-を呼び出す必要があります>クエリ() THADAAAAA !!

注:これは、PHPのOOP機能の非常に良い使用ではないが、それはあなたがどのようにOOPを使用する を教えてあげます。その後、MVC構造に従ってみてください。

関連する問題