2009-07-09 15 views
0

すべての変数名や関数などの最初の文字が小文字のキャメルケースを使用します。しかし、クラス名は大文字になります。私が使用する必要があります。クラスのコンストラクタ名を大文字にする必要がありますか?

class Foo 
{ 
    function foo() 
    { 

    } 
} 

か:より良い大会です

class Foo 
{ 
    function Foo() 
    { 

    } 
} 

?よくわかりません。

+4

これは言語によって決定されていますか? –

+0

これは言語によって異なります。それを強制するものと、コンストラクターの名前が異なるものがあります。 –

+0

良い点は、大文字小文字を区別しない関数名を持つPHPを使用しているためです。この問題は –

答えて

11

名前付きコンストラクタはPHP 4の規約です。そしてそうです、あなたがそうするとき、あなたはクラスの事例にマッチするべきです。

しかし、PHP 4は最近のニュースです。 PHP 5は数年前から事実上のバージョンとなっています。 PHP 5では定数コンストラクタ名__constructを使用しています。クラスの名前にかかわらず、これは常にそうです。

class a 
{ 
    public function __construct() 
    {} 
} 

class b 
{ 
    public function __construct() 
    {} 
} 
+0

1分ですばやく! – jason

+0

私は__constructの使用が嫌いです。その不快な醜い。コンストラクタメソッドはjavaでも使われているので、私はそれを好きです。 __constructの利点は何ですか? –

+0

私はこの権利を理解していますか?あなたはPHP 5を使っていますが、意図的にPHP 4スタイルのコンストラクタを書いています。なぜなら、PHP 5スタイルのものは "醜い"と思うからです。 –

5

コンストラクタ名はクラス名と一致する必要があります(Foo)。これは、PHPだけでなく、Java、C#、およびC++のコピー言語です。これらの言語では、識別子は大文字と小文字が区別されるため、の名前はでなければなりません。

+3

Fooは古いスタイルのコンストラクタ名です。新しいスタイルは__constructを使用します。しかし、あなたはまだ正しいです:) – lavinio

+0

良い点。私の世界では、PHP 4はPHPの「新しい」バージョンです。私は時代の少し後ろです。 :-P –

2

これはJavaやC#のような多くの言語での規約ですが、そうではありません。

大文字と小文字は、開発コンテキストの言語またはクラスライブラリの規則に依存します。

私たちはどのような言葉を話していますか?

大丈夫ですのでPHPです。 PHPの規約はになります。クラス名を大文字にする

のJava大文字のクラス名を使用していますが、クラス内のメソッドはをcamelCase形式されています。当然の

C#方法ため資産計上されたクラス名と同じを使用して物事を混乱させる。

+0

php私はまた、Javaで使用されていることを知りたいです –

1

多くの言語では選択肢がありません。これには、C++、Java、およびC#が含まれます。コンストラクタの名前はクラスの名前なので、クラス名を大文字にした場合にのみコンストラクタ名を大文字にします。 (そうでなければ、コンパイラはそれをコンストラクタとして認識しません。)

他の言語については、残りのクラスのメソッドで使用するのと同じ命名規則を使用してください。それは単純です。

3

可能であれば、私は2番目の例に行きます。つまり、コンストラクタがクラスのインスタンスを返すので、コンストラクタの大文字と小文字を同じにする必要があります(一貫性のために)。

私はクラス "FooBarBaz"を持っている場合、 "fooBarBaz"、 "fooBarBaz"、 "foobarbaz"または何か他のものではなく、 "FooBarBaz"という名前のコンストラクタを期待しています。したがって、彼らは、この動作を強制し、ケーシングが異なる場合アウトエラーになり、

  • 一部の言語では、大文字と小文字が区別されている:

    しかし、それは言語依存です。

  • 一部の言語では大文字と小文字を区別しないため、気にしません。
  • 私は確信していませんが、いくつかの言語では、コンストラクターの名前を別々に指定することがあります(コンパイラーをコンストラクターとして認識する方法はわかりませんが、それは重要ではありません)。
6

正直に、いずれも、

あなたは__construct()を使用しているはずです。もちろん、古風なPHP4に連鎖していない限り、クラスの名前と正確に一致します。

関連する問題