我開始使用OO PHP,在回顧了我從互聯網上下載的各種類之後,我注意到這些類中的一些(但不是全部)具有相同名稱的初始函數,例如PHP類中初始函數的用途與該類具有相同名稱的目的是什麼?
class MyClass{
function MyClass{
//function contents in here
}
function otherfunction{
//more stuff here
}
}
什麼是這個初始功能?它對編寫課程有什麼幫助?
我開始使用OO PHP,在回顧了我從互聯網上下載的各種類之後,我注意到這些類中的一些(但不是全部)具有相同名稱的初始函數,例如PHP類中初始函數的用途與該類具有相同名稱的目的是什麼?
class MyClass{
function MyClass{
//function contents in here
}
function otherfunction{
//more stuff here
}
}
什麼是這個初始功能?它對編寫課程有什麼幫助?
這是一種舊式的constructor。如果你正在使用PHP 5(你應該),你應該避免這些建設者,做相反:
class MyClass{
function __construct() {
//function contents in here
}
function otherfunction() {
//more stuff here
}
}
構造器,總之,用於運行初始化代碼和執行類不變。
它是一個構造 - 當對象被實例化
這個函數是一個構造函數執行什麼擺在這裏。它用於初始化對象。
也請注意,這是不區分大小寫。例如,你有一個Bark()類的狗類遊戲,類名稱Bark是你對狗產生的噪音的參考。
如果你想要一隻特定的狗(例如一隻延伸了普通狗狗的長卷毛狗)去叫,你可以命名該方法叫bark(),因爲那就是你想讓狗做的事情(參見THING和COMMAND?(Bark類和bark()方法))。
所以,當你這樣做:
接口BarkBehaviour { 公共職能樹皮(); }
類樹皮實現BarkBehaviour { 公共職能樹皮(){ 回聲 「\ nWoof!」; }}
你的狗的barkBehaviour屬性的實例將回聲「緯」,因爲PHP認爲,樹皮()方法是在樹皮類,你不打算這樣的構造。在JAVA中,這些東西都是區分大小寫的,所以Bark類的構造函數必須被稱爲Bark(),而不是bark()。
舊的C++風格構造函數的感光度較低。但除此之外,Python風格的構造函數還有什麼功能差異嗎? – mario 2010-06-19 13:17:55
@mario:不,兩種樣式在功能上都是等效的。 – Piskvor 2010-06-19 13:29:53