我建議採用不同的方法.對每種偶數型別使用不同的方法將需要您編寫重複**,這最終將導致代價高昂的可維護**並且容易出錯(即使複製/貼上也容易出錯!我在一些專案中已經看到它以證明它).
首先,當方法不需要在類成員中儲存資料時,靜態呼叫應該僅限制(或大多數情況下);靜態方法不應該設定任何東西,更少的資料由類本身的例項使用.因此,您應該使用單例模式.
其次,如果你應該有很多事件型別,每個都應該有適當的專業類.物件導向的設計從抽象到具體,從一般到專業.因此,您的事件不應該知道它儲存了多少或哪些事件,而應該將其留給呼叫者.這將使您擁有更一致的介面.
這是乙個示例設計:
class events
public function getmonth()
然後,簡單地專門化它(我們建立兩個specialize事件型別):
class microsoftevent extends abstractevent
class linuxevent extends abstractevent
新增新事件
events::getinstance()
->addevent( new linuxevent(2010, 7) )
->addevent( new microsoftevent(2008, 8) )
->addevent( new microsoftevent(2010, 2) )
->addevent( new linuxevent(2009, 1) )
獲取活動
// 1. get all microsoft events
var_export( events::getinstance()->getevents(microsoftevent::type) );
// 2. get all events for 'linux' in 2010
var_export( events::getinstance()->getevents('linux', 2010) );
// 3. same as 1; $month will be ignored, because $year is not specified
var_export( events::getinstance()->getevents('microsoft', null, 6) );
// 4. returns empty array because unknown event type
var_export( events::getinstance()->getevents('foo') );
正如您所看到的,類設計的開銷稍微複雜一些,但之後api更加一致.乙個好的設計必須應用可重複使用的模式,這是在這裡完成的.希望這可以幫助.
class events
class linuxevent extends abstractevent
然後我們測試結果
var_export( events::geteventtype(microsoftevent::type)->getidentifier(2008, 6) );
var_export( events::geteventtype(linuxevent::type)->getidentifier(2010, 2) );
var_export( events::geteventtype('microsoft')->getidentifier('2009', '08') );
如何宣告乙個類
什麼是類 類是使用者自定義的引用型別 類的 示例 class pair class pair class pair 可以有結尾分號 類的 解析 你可以使用關鍵字class來宣告類這一使用者自定義的引用型別。類的語法和結構的非常類似。它提供函式 字段 建構函式 操作符和訪問控制。類成員的預設訪問許可權...
php宣告乙個方法,php如何定義乙個函式
函式是完成乙個特定功能的 集合,可以分為系統函式和使用者函式。使用者可以通過建立自定義函式實現特定需要。1.函式定義語法結構 php中允許使用者使用function關鍵字建立乙個自定義函式。語法結構 function 函式名稱 引數1,引數2,函式內的 php對函式名稱的限制比較少,可以是以字母或下...
php 引入類 php如何在乙個類中引入另外乙個類
有時候需要在乙個類中呼叫另外乙個類裡面的方法,然後另外乙個類又需要呼叫當前類的方法,怎麼辦呢?可以直接引入類物件的方式呼叫另外乙個類的方法 示例如下 傳值方式 class a function b obj obj test class b function test echo test a new ...