2011-10-06 5 views
8

빈 생성자를 정의하거나 PHP에서 생성자 정의를 완전히 빠뜨리는 것이 가장 좋습니다. 난 단지 return true;으로 생성자를 정의하는 습관을 가지고 있는데, 비록 내가 생성자를 필요로하지 않는다고하더라도 - 완성을 위해서입니다.PHP 빈 생성자

답변

10

생성자가 필요없는 경우 더 이상 코드를 작성할 필요가 없습니다. 그것을 쓸 때 비워 두십시오 ... 참된 것은 목적이 없습니다.

1

생성자는 항상 정의 된 클래스의 인스턴스를 반환합니다. 따라서 생성자 내부에서 "반환"을 사용하지 마십시오. 마지막으로 당신이 gona를 사용하지 않는다면 그것을 정의하지 않는 것이 좋습니다.

+0

생성자의 반환 값은 완전히 무시됩니다. – KingCrunch

+0

실제로 내가 생성자 내부에서 생성자를 반환하는 것을 발견하면 절대 코드를 병합하지 않을 것입니다. –

2

개체를 인스턴스화해서는 안되는 경우에만 빈 생성자를 정의해야합니다. 이 경우 __construct()을 비공개로 설정하십시오.

5

편집 : PHP는 이제 다른 OOP 프로그래밍 언어처럼 동작하기 때문에

이전의 대답은 더 이상 유효합니다. 생성자 은 인터페이스의 일부가이 아닙니다. 그러므로 당신은 지금 당신이

유일한 예외 어떠한 문제없이 선호하는 방법을 재정의 할 수 있습니다입니다 :

interface iTest 
{ 
    function __construct(A $a, B $b, Array $c); 
} 

class Test implements iTest 
{ 
    function __construct(A $a, B $b, Array $c){} 
    // in this case the constructor must be compatible with the one specified in the interface 
    // this is something that php allows but that should never be used 
    // in fact as i stated earlier, constructors must not be part of interfaces 
} 

PREVIOUS OLD-유효하지-더이상 답 :이

을 빈 생성자와 생성자가 전혀없는 중요한 차이입니다.

class A{} 

class B extends A{ 
    function __construct(ArrayObject $a, DOMDocument $b){} 
} 

VS 

class A{ 
    function __construct(){} 
} 
class B extends A{ 
    function __construct(ArrayObject $a, DOMDocument $b){} 
} 

// error B::__construct should be compatible with A constructor 
+0

"A"에 정의 된 생성자가 있고 B에 정의되고 비어있는 생성자가있는 경우 필수적으로 생성자를 제거 할 수 있지만 부모가 상속하는 경우에는 생성자를 제거해야합니다. 건설자. 단점은 빈 생성자를 "항상"또는 "결코"포함해서는 안되며, 하나 또는 다른 것을 할 때 항상 같은 것을 의미하지는 않는다는 것입니다. 그것은 모두 상황에 관한 것입니다. – Jason

3

둘 사이에 차이가 있습니다. 빈 __construct() 함수를 작성하면 상속 된 __construct()을 상위 클래스에서 덮어 씁니다.

그래서 필요 없으면 부모 생성자를 명시 적으로 덮어 쓰지 않으려면 전혀 쓰지 마십시오.