在php中从mysql动态生成类属性有什么缺点?

0qx6xfy6  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(217)

抱歉,如果这个问题听起来很混乱,可能还没有用最好的措辞,但这里有一个例子;
假设我们有一个包含不同列的“sales”表,我们想用php创建一个sales类,我传统上是这样做的。。。

class Sale 
{
    public $id;
    public $userID;
    public $customerID;
    public $sale_net;
    public $sale_vat;
    public $sale_gross;
    public $duration;
    public $sale_date;
    public $end_date;

    private $table = "sales";
    private $pk = "id";

function __construct($saleID=NULL){
    if($saleID!=NULL){
        global $pdo;
        $stm = $pdo->prepare("SELECT * FROM {$this->table} WHERE {$this->pk} = ?");
        $stm->execute(array($saleID));
        if($stm->rowCount() > 0)
            {
            $data = $stm->fetchObject();
            $this->id = $saleID;
            $this->userID = $data->userID;
            $this->customerID = $data->customerID;
            $this->sale_net = $data->sale_net;
            $this->sale_vat = $data->sale_vat;
            $this->sale_gross = $data->sale_gross;
            $this->duration = $data->duration;
            $this->sale_date = $data->sale_date;
            $this->end_date = $data->end_date;
            }
        }
    } 
}

现在说到重点,以下方法的缺点是什么;

class Sale 
{
    private $table = "sales";
    private $pk = "id";

    function __construct($saleID=NULL){
        if($saleID!=NULL){
            global $pdo;
            $stm = $pdo->prepare("SELECT * FROM {$this->table} WHERE {$this->pk} = ?");
            $stm->execute(array($saleID));
            if($stm->rowCount() > 0)
            {
                $this->isValid = true;
                $data = $stm->fetchAll();
                $sale = $data[0];
                foreach ($sale as $property => $value) {
                    $this->$property = $value;
                }
            }
        }
    }

我看到的一个优点是,如果将列添加到sales表中,我可以立即访问它们,而无需修改类本身。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题