Извините, если вопрос звучит запутанно, возможно, он не был сформулирован лучше, но вот пример:
Скажем, у нас есть таблица 'продаж' с различными столбцами, и мы хотели сделать продажикласс в 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;
}
}
}
}
Я вижу одинпреимущество заключается в том, что если в таблицу продаж добавляются столбцы, я могу получить к ним доступ немедленно, не изменяя сам класс.