귀하의 두 가지 사례는 실제로 동일하지만, (당신, 현재, 현재) 관점에서만 볼 수 있습니다. 이 예에서
class Person { // First case : using the constructor
public function __construct($person) {
echo $person;
}
}
// ----------------------------------------------------------------
$person = new Person('Name');
, 당신은 매우 명확 클래스
Person
(또는 그 서브 클래스 중 하나)
의 각각의 모든 개체가 즉시이 생성 될 때 이름을 부여해야합니다. 언제든지 이름이없는
Person
은 없습니다. 그것은 한 가지 또는 다른 방식으로 코드를 공유하는 경우 자신에게 부과하기로 선택한 디자인 제약 사항입니다 (클래스
Person
의 객체를 만들려는 경우). 이 제약 조건을 위반하면 PHP는 명시 적 오류/경고 메시지와 함께 중단됩니다. (데모 :
https://3v4l.org/hCXZ8는)
class Person { // Second case : no constructor (equivalent to an empty constructor)
public function name($name) {
echo $name;
}
}
// ----------------------------------------------------------------
$person = new Person();
$person->name('Name');
이 다른 짐승이다 : 당신은 클래스 Person
의 개체를 만들 수 있습니다, 당신은 이름을 표시 할 수 있습니다. Person
을 만들 수도 있고 이름을 전혀 표시 할 수도 없습니다. 어떤 이유로 든 클래스 코드에 눈을 띄지 않으면 실제로는 알 수 없을 수도 있습니다 (각 클래스에 고유 한 파일을 제공하는 것이 일반적입니다). 두 예에서
나는이 두 개의 서로 다른 관점은 (그들도 서로 통신 할 수있는 두 종류의 사람이 될 수 있다고 생각) 때문에, 클래스 선언 및 사용과 주석 행을 끌었다. 클래스 작성자는 제약 조건을 생성 할 수있는 가장 명확한 코드로 정확하게 변환합니다. 클래스 사용자는 사용하는 클래스의 복잡성을 이해하는 데 시간을 낭비하고 싶지 않습니다. 최소한의 복잡도로 객체를 만들고, 최소한의 오버 헤드와 학습 곡선으로 기능을 활용하고 코드로 작업하기를 원합니다. 및 비즈니스.
매뉴얼 : [생성자 및 소멸자] (http://php.net/manual/en/language.oop5.decon.php) –
생성자는 단순히 객체 생성시 첫 번째 및 필수 동작을 정의합니다. – Kazz
차이점을 볼 수 없습니까?! 하나는 생성시에 인수를 전달하고 다른 하나는 나중에 다른 인스턴스 메소드에 전달합니다. 꽤 명확한 차이는 IMO. 왜 그렇게 다르지 않다고 생각하는지 분명히하고 싶을 수도 있습니다. – deceze