抱歉,如果这个问题听起来很混乱,可能还没有用最好的措辞,但这里有一个例子;
假设我们有一个包含不同列的“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表中,我可以立即访问它们,而无需修改类本身。
暂无答案!
目前还没有任何答案,快来回答吧!