Ben böyle bir sınıf var diyelim:
Class User {
var $id
var $name;
}
Ve ben bu yüzden gibi php PDO kullanarak bir sorguyu çalıştırın:
$stm = $db->prepare('select * from users where id = :id');
$r = $stm->execute(array(':id' => $id));
$user = $r->fetchObject('User');
Benim kullanıcı nesnesini vardump Eğer ben kullanıcı sınıfında tanımlı değil bunu diğer alanlarda her türlü sahiptir. Sadece bana / Talep ihtiyaç alanları geri verir, böylece Açıkçası benim sorgu belirli yapabiliriz. Ben yapmak istemiyorum ama eğer bu işi ben bunu istiyorum yol yapmak için herhangi bir yolu var mı?
Bu nesne oluşturmak ve benim için üye değişkenleri belirlemek için tek bir kod satırı çünkü ben, fetchObject fikir gibi. Ben sadece benim sınıfında tanımlı değil değişkenleri ayarlamak istemiyorum.
EDIT:
Karim79 doğru ve ben bunu istiyorum yol almak ya da fetchObject işe yaramaz gibi iyi görünüyor. Ben istenilen sonuçları almak için getir yok sonra kod aşağıdaki bit ekledik.
$valid_vars = get_class_vars('User');
foreach (get_object_vars($user) as $key => $value) {
if (!array_key_exists($key, $valid_vars)) {
unset($user->$key);
}
}
Açıkçası ben PDOStatement sınıfını genişletmek ve kendi yöntemini fetchIntoObject ya da bunun gibi bir şey eklemek ve otomatik olarak bu boşaltır yapacağım :/ en zarif çözüm. Umarım çok yükü olmak, ancak kolayca kod 1 hattı ile bir nesne haline getirmek için muktedir istiyorum olmamalı :)
SUPER EDIT:
Teşekkürler bulunuyor Mamaar ben tekrar belgelerine gitti comment. Ben sorunun ne olduğunu buldum. http://us.php.net/manual/en/pdo.constants.php ve PDO :: FETCH_CLASS gidin ve özellikleri sınıfta yokmuş sihirli yöntem __ set () kullanıldığını açıklıyor. Ben, benim hedef sınıf ve Tada yılında yöntemini overwrote çalışır. Yine, en zarif çözüm. Ama şimdi ben neden anlamak, ve bu benim için çok önemli: D