2009-07-09 3 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 사용이 마음에 들지 않습니다. 그것의 fricking 못생긴. 생성자 메서드도 자바에서 사용되므로 그렇게하겠습니다. __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#과 같은 많은 언어에서의 규칙이지만, 모든것에서 그러하지는 않습니다.

대문자 사용은 개발 컨텍스트의 언어 또는 클래스 라이브러리 규칙에 따라 다릅니다.

그래서 어떤 언어를 사용합니까?

오케이, so PHP. PHP 규약은 으로, 클래스 이름은 대문자로 표기합니다..

자바대문자 클래스 이름를 사용하지만, 클래스 내에서 메소드는 을 낙타 표기법입니다. 물론

C#을대문자 클래스 이름방법에 대해 동일한를 사용하여 일을 혼동한다.

+0

php 비록 내가 자바에서 사용되는 것을 알고 싶습니다. –

1

많은 언어로 선택하지 않습니다. 여기에는 C++, Java 및 C#이 포함됩니다. 생성자의 이름은 클래스의 이름이므로 클래스 이름을 대문자로 사용하는 경우에만 생성자 이름을 대문자로 만드십시오. (그렇지 않으면 컴파일러는이를 생성자로 인식하지 못합니다.)

다른 언어의 경우 나머지 클래스 메소드에 사용하는 것과 동일한 이름 지정 규칙을 사용하십시오. 그것은 아주 간단합니다.

3

가능한 한 두 번째 예제를 사용합니다. 즉, 생성자가 클래스의 인스턴스를 반환하기 때문에 생성자의 대/소문자가 클래스 이름과 일치해야합니다 (일관성을 위해).

개인적인 규칙 일 수 있지만 "FooBarBaz"클래스가 있으면 "fooBarBaz", "fooBarBaz", "foobarbaz"또는 그 밖의 다른 이름이 아닌 "FooBarBaz"라는 이름의 생성자가 필요합니다. 따라서 그들은이 동작을 강제 케이스가 다른 경우 오류가 밖으로 것,

  • 일부 언어는 대소 문자를 구분 :

    그러나, 언어에 따라 달라집니다.

  • 일부 언어는 대/소문자를 구분하지 않으므로 신경 쓰지 않습니다.
  • 확실하지 않지만 일부 언어에서는 생성자의 이름을 달리 지정해야 할 수도 있습니다 (컴파일러가이를 생성자로 인식하는 방법을 모르지만 요점은 아닙니다).
6

솔직히, 어느 쪽도 아니야.

당신은 __construct()을 사용하고 있어야합니다. 물론 고대 PHP4에 연결되어 있지 않으면 클래스 이름과 정확하게 일치해야합니다.