PHP - Ben Page sınıf içinde depolanan bilgilerin ne demeliyim?

2 Cevap php

Ben (örneğin başlık, içerik, anahtar kelimeler vb gibi) tüm bilgileri depolayan anda _pageData denilen özel bir özelliği ile adında bir sınıf Sayfası var.

Ben ona bakın Ancak, bana bu kadar iyi görünmüyor bu-> _pageData $. Ben daha iyi bir isim düşünmek istiyorum, ve muhtemelen bu tür şeyler için bir standart ya da 'en iyi uygulama' adı / önek / sonek orada olacağını hayal ediyorum. Ben '_assets' düşündüm.

Ben, geçmişte kullanılan ne ona bazı veri eklemek ve "Oh hayır, şimdi benim dizi değişken adının kapsamı dışında olduğunu içinde veri olan" go parça aşağı yapılmış değil benzersiz bir ad isteyebilir . Ben çalışmak için kanıtlanmıştır görmek istiyorum bu benim için bir kaç kez oldu.

Teşekkür ederim

2 Cevap

class Page {
    public $title = '';
    public $keywords = array();
    public $content = '';
    // etc.
}

$page = new Page();
echo '<title>' . $page->title . '</title>';
echo $page->content;

Yoksa sebat ile değiştirilmiş, ya da her türlü izin, verilerinizi korumak için /-set olsun erişimcilerini ve benzeri kullanabilirsiniz. Bu tembel başlatma ve tembel yazı (ikincisi için uygun bir terim varsa emin değilim) için izin verir. Örnek:

class Page {
    private $data = array('title' => '', 'keywords' => array(), 'content' => '');

    public __get($name) {
        if(isset($this->data[$name]))
            return $this->data[$name];

        /* You probably want to throw some sort of PHP error here. */
        return 'ERROR!';
    }
}

$page = new Page();
echo '<title>' . $page->title . '</title>';
echo $page->content;

(overloading in the PHP5 manual daha fazla bilgi için bakınız.)

Eğer $ veri üyelerini gizlemek hatta onları değiştirebilir veya yenilerini ekleyebilirsiniz ($ sayfa-> contentHTML örneğin, HTML markdown dönüştürebilir).

Adını kullanarak _pageData sayfa sınıf için gereksiz olduğunu. Eğer bilgi ($ CurrentPage-> veri vs $ CurrentPage-> _pageData) tekrar ediyorsun yüzden zaten, bu bir sayfa olduğunu biliyorum.

Ben de ilişkisel diziler bu tür bir şey için biraz daha karışık buluyorum, ama gerçekten dinamik bir sistem istiyorsanız onlar gerekli olabilir. Ne olursa olsun, bu size (sizin için liste kullanabileceğiniz kolay bir veritabanı sorgu, dışında ()) için dizi istediğini varsayarak, ($member = 'title'; echo $page->$member; // echoes $page->title) ismiyle sınıf üyelerine erişmek için şablon sistemi uygulayabilirsiniz .

Bu çok özel ve ben bir "standart" ya da "en iyi uygulama" olduğunu sanmıyorum. Sadece Sizce iyi hissediyor ne olursa olsun diyoruz. Kendi içinde, ben sadece Page sınıf olarak "veri" çağırır, $ this Page =, yani Page-> Veri. Bu benim için yeterli olacaktır.

Ben _ önek kullanın çünkü Belki bu garip sesler ... daha iyi bir isim düşünemiyorum? Ben özel PHP, çok mantıklı değil, önek bu türlü kullanmak sevmiyorum, ama bu sadece benim.