2010-05-27 71 views
2

我需要獲取數據,檢查併發送到數據庫。用PHP OOP編程。php oop和mysql

你能告訴我,我的班級結構是否好,以及如何dislpay所有數據?謝謝

<?php 
class Database{ 

    private $DBhost = 'localhost'; 
    private $DBuser = 'root'; 
    private $DBpass = 'root'; 
    private $DBname = 'blog'; 

    public function connect(){ 
     //Connect to mysql db 
    } 

    public function select($rows){ 
     //select data from db 
    } 

    public function insert($rows){ 
     //Insert data to db 
    } 

    public function delete($rows){ 
     //Delete data from db 
    } 
} 

class CheckData{ 

    public $number1; 
    public $number2; 

    public function __construct(){ 
     $this->number1 = $_POST['number1']; 
     $this->number2 = $_POST['number2']; 
    } 

    function ISempty(){ 
     if(!empty($this->$number1)){ 
      echo "Not Empty"; 

      $data = new Database(); 
      $data->insert($this->$number1); 
     } 
     else{ 
      echo "Empty1"; 
     } 

     if(!empty($this->$number2)){ 
      echo "Not Empty"; 

      $data = new Database(); 
      $data->insert($this->$number2); 
     } 
     else{ 
      echo "Empty2"; 
     }  
    } 
} 

class DisplayData{ 

    //How print all data? 
    function DisplayNumber(){ 
     $data = new Database(); 
     $data->select(); 
    } 
} 

$check = new CheckData(); 
$check->ISempty(); 

$display = new DisplayData() 
$display->DisplayNumber(); 
?> 
+0

班級結構很好,但是,我看到一個哎呀。 「ISempty」方法可能應該是「isEmpty」,以避免他人閱讀代碼時出錯。當我看到「ISempty」(界面名爲「Sempty」lol)時,我最初認爲您正在引用一個界面。此外,我可能會自己抽象數據庫類,並通過任何項目使其可重用(無需重新編碼數據庫憑據)。 – Zack 2010-05-27 18:47:39

回答

4

這是可怕的一段代碼。

  1. 對於數據庫通信使用PDO。這並不完美,但沒關係。
  2. 每次你需要數據庫你都會連接到那個數據庫?
  3. Database::insert()等必須是一個真正的魔術師猜出它的參數應該插入
+0

@Gutzofter:Ekhem ...什麼? – Crozin 2010-05-29 08:38:54

1

你需要一個更好的IDE,以顯示您不確定的變量。我使用PHPStorm

您需要一些dependency injection。使用encapsulation。只需按照SOLID

倒數第二件事,不要在對象內回顯。你不能這樣有效地代碼unit test

你也可以嘗試一些TDD

+1

當然,所有這些都很好,但一次學習是相當艱鉅的。我建議首先了解封裝,因爲它是你提到的所有其他事情的一部分。單元測試,依賴注入和一般的SOLID原則從那裏開始。此外,NetBeans現在有一個非常漂亮的PHP IDE,並且完全免費。 – 2010-05-28 01:43:39

+0

我以前的IDE是/是NetBeans。 Storm通過ftp處理部署到SCM和服務器。 – Gutzofter 2010-05-28 01:50:52

+0

哦,自由永遠是好事。 – Gutzofter 2010-05-28 01:51:11

1

我想這裏你錯了。你正在構造的是一個已經存在的數據庫函數的包裝。事情是,這些函數已經被定義爲完全按照你想要的來實現 - 這裏面向對象的方法沒有真正的目的,因爲它只能連接到一個數據庫,而且這些方法並沒有真正定義好,並且似乎是純粹的傳遞底層。

正如其他人所提到的,您似乎在這裏執行的代碼並不適合您的目的。類似PDO將爲您提供良好的服務,並且已經內置到PHP中。您不需要像訪問數據庫一樣重新發明輪子來獲取這種通用代碼。

學習一些核心的對象定向原則對你也會有幫助 - 首先看封裝和代碼重用。當你必須維護你寫的代碼時,他們會在將來幫助你!