繁体   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