Mesajların w / kullanıcı masaya katılmak ve her biri için bir örnek oluşturmak

1 Cevap php

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.)

1 Cevap

Senin yerinde olsam ben etrafında ORM bazı araçlar bakmak istiyorum, burada php için mevcut olanların iyi bir toparlama var:

http://stackoverflow.com/questions/108699/good-php-orm-library