我對PHP相對比較陌生(以及一般的編程)。記住這一點。如何限制PHP中的類實例?
以下是基本情況。我正在建設一個網絡小型大學。
有兩個關鍵類:第和課程系列。
- 課有一系列的屬性,如果這個教訓是屬於一個系列的存儲奇異LessonSeries 。它可能不會。
- LessonSeries具有吸取的財產,課程對象將保存數組..
這兩個類具有「ID」屬性,該屬性是整數,並且將是唯一的它們的類。我的數據庫確保不會有兩個課程或兩個具有相同ID的課程系列。
在我的網站的許多頁面中,課程對象被迭代,並且(如果他們有一個系列),他們將顯示他們所屬的系列,有時使用一些其他的LessonSeries方法和屬性。
所以,這是問題:當從Db中拉出課程時,它會構建一個LessonSeries以與其相對應。但我不想在那裏存在20個相同LessonSeries的實例。某些方法觸發只需要在每個課程系列中執行一次的數據庫查詢。如果有20個實質上相同的系列實例,這可能會導致比所需更多的db活動。
我是新來的編程模式,但這裏是我想我需要:
- 我想唯一LessonSeries的註冊表。
- 我希望每個獨特的LessonSeries都被 所屬的所有課程共享。
- 理想情況下,我希望此功能位於LessonSeries類中,而不必擁有第二個管理員類(如果可能的話)。
- 基本上,我想要的是,無論何時構造一個LessonSeries,都會首先檢查註冊表是否存在該id。如果是這樣,返回的是對現有課程系列的引用。如果它不存在於註冊表中,那麼它將照常創建。
這樣說,我不知道如何使這發生在PHP中。
編輯: 有人指出,在我需要證明我已經嘗試解決問題的這是一個很好的問題,各種各樣的,對這樣的意見。但那正是我的問題。
我認爲做這樣的事情:
class LessonSeries {
private static $registry;
public $Id;
public $SeriesName;
public $ImagePath;
public $Description;
private $index;
private $lessons;
private $lessonCount;
public function __construct($seriesName, $imagePath=null, $Id=null, $description = null) {
if(isset(self::$registry[$id])){
return self::$registry[$Id];
}else{
$this->SeriesName = $seriesName;
$this->ImagePath = $imagePath;
$this->Id = $Id;
$this->Description = $description;
self::$registry[$Id] = $this;
}
}
不過,我並不認爲這是多麼的PHP構造函數的工作。我想我知道如何去做我想要的東西(使用子類等),但PHP沒有子類。這就是我掙扎的地方。
歡迎SO。 請閱讀[我可以問哪些主題](http://stackoverflow.com/help/on-topic) 和[如何提出一個好問題](http://stackoverflow.com/help/how-to - 問) 和[完美的問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) SO是**不是免費的編碼或教程或庫尋找服務**你必須證明你已經努力解決你自己的問題。 – RiggsFolly