Sınıfları oluşturma ya da sadece PHP XML veri için ilişkilendirilebilir diziler kullanarak?

3 Cevap php

3 Cevap

Ben bu projede bağlıdır düşünüyorum ...

İlk tasarım:

  • Strictly nesne yönelimli ilkeler aşağıdaki
  • Derlenmiş diller için daha uygun bir yaklaşım gibi görünüyor
  • Necessary in a big application
  • Easy to reuse
  • Benefiting when passing data around
  • You have methods to add functionality, not just data

İkinci tasarım:

  • API değiştirilmiş ise bir çok daha az bakım ihtiyacı olacaktır. API XML bir öznitelik ekler varsa, ilgili sınıf ilk tasarım güncelleştirilmesi gerekir.
  • Straight forward & quick solution
  • Little code

Ben Philippe ile kulüpler: uygulama (sadece örneğin durum yöntemlerini çağırarak) gerçekten küçük olacak ise, çözüm 2 ile gitmek.

Ben sadece durum bilgileri yankı sınıflar bir grup oluşturarak, gerçekten ilk etapta ihtiyaç olmadığını kabul ediyorsunuz. Ama uygulama çok büyük olacak, akılda çözüm 1. tasarım. Eğer gelişimi ile birlikte gitmek gibi, belirli sınıflara ait olacaktır özel yöntemler oluşturmak için gidiyoruz. Bazen "sipariş" durum mesajları için bir yöntem oluşturmak istiyorum. Kim bilir? Biz sınıfları, bu kendi sorumluluğu ile her biri oluşturmak neden olduğunu, bu yüzden işlev sayesinde yüzlerce büyük bir php dosyası aramanıza gerek olmazdı.

Ben size uygulama büyümeye nasıl gittiğini bilmiyorum, bir "best-of-her ikisi de dünyalar" yaklaşımı belki 12 bütünleştirici, en azından her Twitter kategoriler (Timeline, Durum, Kullanıcı, vb sınıfları oluşturmak olacaktır inanıyorum ), yerine her yöntemi. Eğer çok fazla sınıfları oluşturmak istemiyorsanız iyi bir çözüm, senin durumunda IMO olduğunu.

Eğer PHP5 XML ile çalışıyorsanız sonra ben iyi SimpleXML kullanmak olacağını düşünüyorum. Sonra her iki dünyanın en iyi var. Sen çok array-like şekilde değerlere erişebilir. Eğer yöntemleri ve diğer özel güzel-zenginler. Sağlamak için SimpleXML sınıfı uzatabilirsiniz Ancak

// To get the effect of an array...
$twitte = 'http://twitter.com/statuses/public_timeline.xml';
$public_timeline = simplexml_load_file($twitte);
echo $public_timeline->statuses->status;

Veya SimpleXML Class uzatmak

class MyXml extends SimpleXml
{    
    public function quickStatus()
    {
        $status = $this->xpath("/statuses/status");
        return (string)$status[0];
    } 
}

// then access like
$twitte = 'http://twitter.com/statuses/public_timeline.xml';
$public_timeline = simplexml_load_file($twitte, 'MyXml');
echo $public_timeline->quickStatus();

Yukarıdaki örnek sadece sınıfını genişletmek için nasıl göstermektir. Daha fazla bilgi isterseniz XML class from a library I've created on Google Kodunu kontrol edebilirsiniz