Diyelim ki yorumların yem bina ve yorum veri ve yazarın kullanıcı verileri gerekir ediyorum diyelim. Önemli Comment
sınıfı ile temsil edilmektedir. Kullanıcılar, User
sınıfı ile temsil edilmektedir. Yorum çekerken, bir $author
üyesi Comment
User
(yazar hakkında tüm bilgileri tutmak için) bir örnek ayarlanmış olmalıdır.
class Comment {
var $id;
var $body;
var $timestamp;
var $etc;
var $authorid;
var $author; //(a 'user' instance)
static function fromArray($members){ /*...*/ }
}
class User {
var $id;
var $username;
var $haspicture;
var $etc;
static function fromArray($members){ /*...*/ }
}
How i'm doing it now...
Ben bugüne kadar bunu yapıyorum yolu tabloları birleştirme ve tek ihtiyacım temel kullanıcı verilerini çekerek ... ve herhangi bir sütun isimleri çarpışır, ben bir takma ad ayarlayın (field AS somethingelse
). Burada temel bakalım:
$query = mysql_query('SELECT c.*, u.username AS author_username, u.haspicture AS author_haspicture FROM comments c JOIN user u ON u.id = c.authorid');
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)){
$comment = Comment::fromArray($row);
}
$author
oluşturmak için ... Comment her satırında beslenir fromArray()
yöntem bu gibi görünüyor:
static function fromArray($members){
foreach($members as $field => $value){
$this->$field = $value;
}
$this->author = User::fromArray(array(
'id' => $row['authorid'],
'username' => $row['author_username'],
'haspicture' => $row['author_haspicture']
));
}
So here's my question:
Ben bir şey eksik? Bunu yapmanın daha iyi bir yolu olmalı var. Bu şekilde bu kadar esnek ve tabloları değiştirmek veya bir User
yöntem değişiklikleri zaman kırılma eğilimli görünüyor ve sorgu tarafından sağlanan değil bir alanı ihtiyacı biter. Her kullanıcı için ayrı bir sorgu bir seçenek olamaz ... o can?
(Ps User nesnesi biraz daha kompleks olduğunu akılda tutmak ve bu açıklamalar görüntülenir zaman sonra denir daha birçok yöntem vardır. Makul basık ve bir dizi olarak tedavi edilemez. OO kurulum oldukça gereklidir.)