Какой недостаток будет в том, чтобы сделать свойства класса динамическими из MySQL в PHP? - PullRequest
0 голосов
/ 04 июня 2018

Извините, если вопрос звучит запутанно, возможно, он не был сформулирован лучше, но вот пример:

Скажем, у нас есть таблица 'продаж' с различными столбцами, и мы хотели сделать продажикласс в php, я бы традиционно подходил к этому так ...

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;
                }
            }
        }
    } 

Я вижу одинпреимущество заключается в том, что если в таблицу продаж добавляются столбцы, я могу получить к ним доступ немедленно, не изменяя сам класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...