簡體   English   中英

PHP的oop和mysql

[英]php oop and mysql

我需要獲取數據,以檢查並發送給db。 用PHP OOP編程。

您能告訴我我的班級結構是否良好,以及如何分配所有數據嗎? 謝謝

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

那是一段可怕的代碼。

  1. 對於數據庫通信,請使用PDO 這不是完美的,但是很好。
  2. 每次您需要數據庫時都將與該數據庫連接?
  3. Database::insert()等必須是一名真正的魔術師才能猜測應該在何處插入其參數

您需要一個更好的IDE來顯示未定義的變量。 我使用PHPStorm

您需要一些依賴注入 使用封裝 只需遵循SOLID即可

倒數第二件事,不要從對象內部回顯。 您不能以這種方式有效地對代碼進行單元測試

您也可以嘗試一些TDD

我認為您在這里出了錯。 您正在構造的是對已經存在的數據庫函數的包裝。 事實是,那些已經定義為完全可以實現您想要的功能的方法-此處的面向對象方法沒有真正的目的,因為它只能連接到一個數據庫,並且這些方法的定義不是很好,並且似乎只是傳遞給數據庫。底層。

正如其他人提到的那樣,您似乎要在此處使用的代碼不適合您的目的。 諸如PDO之類的東西將很好地為您服務,並且它已經內置在PHP中。 您不需要為訪問數據庫之類的通用代碼而費力工作。

學習一些核心的面向對象原理也將對您有好處-首先看一下封裝和代碼重用。 在將來您必須維護編寫的代碼時,它們將為您提供幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM