我使用具有所有變量名,函數等的第一個字母的駝峯案例。但類名是大寫的。我應該使用:我應該爲我的類使用構造函數名嗎?
class Foo
{
function foo()
{
}
}
或:
class Foo
{
function Foo()
{
}
}
這是一個更好的慣例?我很困惑。
我使用具有所有變量名,函數等的第一個字母的駝峯案例。但類名是大寫的。我應該使用:我應該爲我的類使用構造函數名嗎?
class Foo
{
function foo()
{
}
}
或:
class Foo
{
function Foo()
{
}
}
這是一個更好的慣例?我很困惑。
命名的構造函數是PHP 4約定。是的,當你這樣做時,你應該匹配班級的情況。
但是PHP 4現在是個新聞。幾年來,PHP 5一直是事實上的版本。而PHP 5使用了一個常量構造函數名稱__construct。無論班上有什麼名字,總是這樣。
class a
{
public function __construct()
{}
}
class b
{
public function __construct()
{}
}
構造函數的名稱應該與類名匹配,所以Foo
。這是慣例,不僅在PHP中,而且在複製的語言中:Java,C#和C++。在這些語言中,標識符區分大小寫,因此名稱必須是纔是相同的。
儘管這是許多語言(如Java或C#)中的約定,但並非如此。
大小寫取決於開發環境中的語言或類庫約定。
那麼,我們在說什麼語言?
好的,所以PHP。 PHP中的慣例是大寫類名稱。
的Java還採用大寫的類名,而是一個類中的方法是駝峯格式。
當然C#,通過使用大寫的類名與同爲方法帶來混亂。
許多語言不會給你一個選擇。這包括C++,Java和C#。構造函數的名稱是類的名稱,所以當且僅當使用大寫的類名稱時,大寫構造函數名稱。 (如果不這樣做,那麼編譯器無論如何都不會將其識別爲構造函數)。
對於其他語言,使用與其他類的方法相同的命名約定。就這麼簡單。
如果可能,我會去第二個例子。也就是說,構造函數的情況應該與類名匹配,因爲構造函數正在返回類的實例,所以它應該被命名爲相同的(爲了一致性)。
這可能是個人慣例,但如果我有一個類「FooBarBaz」,我期望構造函數被命名爲「FooBarBaz」,而不是「fOOBARBAZ」,「fooBarBaz」,「foobarbaz」或其他任何東西。
但是,它是依賴於語言:
老實說,也沒有。
你應該使用__construct()
除非你被鏈接到相當古老的PHP4,那麼你完全匹配類的名稱。
這不是由語言決定的嗎? – 2009-07-09 03:54:19
是的,這取決於語言。有些強制執行它,有些對構造函數有不同的名稱。 – 2009-07-09 03:55:24
好點,我使用的PHP具有不區分大小寫的函數名,因此這個問題 – 2009-07-09 03:56:14