php oop ve mysql

3 Cevap

I need to get data, to check and send to db. Programming with PHP OOP.

Benim sınıf yapısı iyi olduğunu ve nasıl dislpay tüm veri olmadığını söyleyebilir misiniz?. Teşekkürler

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

3 Cevap

Bu kod korkunç parçası.

  1. Veritabanı iletişim kullanımı için PDO. O mükemmel değil, ama iyi.
  2. Eğer veritabanı gerekir her zaman bu db ile bağlantı olacak?
  3. Database::insert() vb onun parametresi eklenecek sanırım gerçek bir sihirbaz olmak gerekir

Sen tanımsız değişkenleri göstermek için daha iyi bir IDE gerekir. Ben kullanmak PHPStorm.

Bazı dependency injection gerekir. Kullan encapsulation. Sadece takip SOLID.

İkinci en son şey, nesneler içinde yankı yok. Sen olamaz unit test etkili kod bu şekilde.

Ayrıca bazı TDD deneyebilirsiniz.

Burada yanlış şeylere gidiyoruz, ben düşünüyorum. Ne kuruyor zaten varolan veritabanı fonksiyonları etrafında sarıcı. Şey bu fonksiyonlar zaten tam olarak ne istediğinizi yapmak için tanımlanan, - bu yalnızca bir veritabanına bağlanabilir beri burada nesne yönelimli yaklaşım gerçek bir amaca hizmet ve yöntemler gerçekten iyi tanımlanmış değildir ve olarak saf geçiş throughs hareket gibi görünüyor temel tabaka.

Diğerleri de söylediğim gibi, sen burada olacak gibi görünüyor kodu amaçlara uygun gitmiyor. Gibi bir şey PDO iyi hizmet ve onun zaten PHP inşa edecek. Bir veritabanı erişim gibi ortak kod için yeniden icat tekerlek gerekmez.

Bir kaç çekirdek nesne yönelimi ilkelerini öğrenme çok size iyi gelecek - kapsülleme ve kod ilk yeniden kullanım bakmak. Eğer yazmak bu kodu korumak zorunda onlar gelecekte yardımcı olacak!