相反然後使用PHP的標準類來檢索值,可以使用實體類,如下所示。
Class customer {
protected $_email;
public function __construct(array $config = array()){
$this->setOptions($config);
}
public function getEmail(){
return $this->_email;
}
public function setEmail($email){
$this->_email = $email;
}
public function setOptions(array $options)
{
$_classMethods = get_class_methods($this);
foreach ($options as $key => $value) {
$method = 'set' . ucfirst($key);
if (in_array($method, $_classMethods)) {
$this->$method($value);
} else {
throw new Exception('Invalid method name');
}
}
return $this;
}
public function setOption($key, $value){
return $this->setOptions(array($key, $value));
}
}
現在你可以簡單地做到這一點。
$W = $stmt->fetch(PDO::FETCH_ASSOC);
$customer = new Customer($w);
現在訪問屬性將返回null或在實體類中設置的默認值。即使它在查詢結果中未定義。
$customer->getEmail();
這實際上是我正在做的事情,但如果該字段爲空,並且屬性未定義,那麼您將獲得'Notice:Undefined property:stdClass :: SomeField'。 'FETCH_ASSOC'是否以不同的方式處理空值? – Nick
@Nick你是否爲StdClass中的null屬性設置了默認值? –
*您可以設置「StdClass」的默認值嗎? – Nick