如何宣告乙個php類,現代方式在php中宣告乙個類

2021-10-25 21:11:32 字數 1676 閱讀 7618

我建議採用不同的方法.對每種偶數型別使用不同的方法將需要您編寫重複**,這最終將導致代價高昂的可維護**並且容易出錯(即使複製/貼上也容易出錯!我在一些專案中已經看到它以證明它).

首先,當方法不需要在類成員中儲存資料時,靜態呼叫應該僅限制(或大多數情況下);靜態方法不應該設定任何東西,更少的資料由類本身的例項使用.因此,您應該使用單例模式.

其次,如果你應該有很多事件型別,每個都應該有適當的專業類.物件導向的設計從抽象到具體,從一般到專業.因此,您的事件不應該知道它儲存了多少或哪些事件,而應該將其留給呼叫者.這將使您擁有更一致的介面.

這是乙個示例設計:

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