문제
PHP에서 OOP에 대해 더 많이 배우려고 노력하는 내 퀘스트에서. 나는 생성자 기능을 몇 번 잘 발견했으며 더 이상 무시할 수 없습니다. 내 이해에 따르면, 생성자는 내가 객체를 만드는 순간에 호출됩니다. 이것이 맞습니까?
그러나 "정상"함수 또는 메소드를 호출 할 수 있다면 왜이 생성자를 만들어야합니까?
건배, 키이스
해결책
예 객체가 생성 될 때 생성자가 호출됩니다.
생성자의 유용성의 작은 예는 이것입니다.
class Bar
{
// The variable we will be using within our class
var $val;
// This function is called when someone does $foo = new Bar();
// But this constructor has also an $var within its definition,
// So you have to do $foo = new Bar("some data")
function __construct($var)
{
// Assign's the $var from the constructor to the $val variable
// we defined above
$this->val = $var
}
}
$foo = new Bar("baz");
echo $foo->val // baz
// You can also do this to see everything defined within the class
print_r($foo);
업데이트 : 질문은 이것이 왜 사용되어야하는지 묻습니다. 실제 예제는 데이터베이스 클래스입니다. 데이터베이스 클래스는 사용자 이름과 비밀번호와 테이블을 연결하여 객체를 호출하여 생성자가 연결합니다. 그런 다음 해당 데이터베이스 내에서 모든 작업을 수행 할 수있는 기능이 있습니다.
다른 팁
생성자를 사용하면 객체를 사용하기 전에 객체를 특정 상태에 넣을 수 있습니다. 예를 들어, 객체에 사용하기 위해 필요한 특정 속성이있는 경우 생성자에서 초기화 할 수 있습니다. 또한 생성자는 객체를 초기화하는 효율적인 방법을 허용합니다.
생성자의 아이디어는 객체에 대한 초기 데이터를 준비하는 것이므로 예상대로 작동 할 수 있습니다.
Just call a method
당신이 그렇게하는 것을 잊을 수 있기 때문에 거래가 아니며, 이는 구문에서 "작업 전"로 지정할 수 없으므로 "깨진"객체를 얻을 수 있습니다.
생성자는 다양한 것들에 좋습니다. 그들은 당신의 수업에서 변수를 초기화합니다. BankAccount 클래스를 만들고 있다고 가정 해 봅시다. $ B = 새로운 BankAccount (60); 은행 계좌에 초기 값을 제공하는 생성자가 있습니다. 클래스 내에서 기본적으로 변수를 설정하거나 다른 클래스 (상속)를 초기화 할 수도 있습니다.
생성자는 객체가 생성 될 때 완료된 초기화를위한 것입니다.
새로 생성 된 객체에서 임의의 메소드를 호출하고 싶지 않을 것입니다. 이는 캡슐화 아이디어에 위배되므로 내부 작업에 대한 내재 된 지식을 갖기 위해이 개체를 사용하는 코드가 필요하기 때문입니다.