* 오늘의 진도
PHP
생성자 (인스턴스 초기화)
29. 생성자 (인스턴스 초기화)
Constructor(생성자): 클래스를 기반으로 해서 인스턴스를 만드는 역할을 하는 것
여기서 SplFileObject()가 바로 생성자이다.
생성자를 통해서 앞에 new를 붙이면 인스턴스가 생성된다.
그런데 이 생성자를 통해서 인스턴스를 생성할 때,
data.txt라는 상태를 객체에 주입했다.
즉, 객체를 만들 때 필수적인 상태를, 처음부터 주입하는 테크닉이다.
반대로 여기서는 인스턴스를 생성할 때 상태를 주입하지 않고,
생성한 후에 인스턴스 변수를 통해서 상태를 주입했다.
이 때의 문제는 상태를 주입하는 것을 잊어버릴 수도 있다는 것이다.
이 경우에도 생성자 차원에서 필수적으로 필요한 정보를 강제로 입력하는 방법을 살펴보겠다.
data.txt가
첫 째줄의 저 자리에 들어와서
인스턴스가 생성될 때 반드시 파일의 이름을 지정하도록 할 수 있다.
그 때 사용하는 것이 constructor이다.
php에서는 __construct (_이 두개임) 라고 하는 함수가 생성자이다.
생성자를 사용할 때는 이런 함수를 정의하면
인스턴스가 생성될 때 __construct라는 함수를 php가 호출하겠다는 약속이 되어 있다.
그러면 우리는 이 인스턴스가 생성될 때, 특별한 처리를 해야한다면,
이렇게 약속된 이름을 사용할 함수를 정의하면,
php가 인스턴스를 생성할 때 저 함수를 호출할 것이라고 기대할 수 있다.
이렇게 $this->filename을 $fname으로 해서
생성자 안에 넣어주면
인스턴스가 생성될 때 __construct라는 함수가 호출되기로 약속되어 있기 때문에
php는 이 인자로 전달된 data.txt라는 값을
$fname이라는 매개 변수의 값으로 전달한다.
그러면 대입연산자에 의해서 인스턴스 변수 filename의 값이 세팅이 되면서
인스턴스 내에서는 filename이라는 변수의 값이 세팅된다.
그래서 생성자가 하는 중요한 역할은
1) 인스턴스가 생성될 때 필수적으로 필요한 데이터를
인자를 통해서 전달받을 수 있게 하는 것이다.
2) 이 함수(__construct)가 인스턴스가 생성될 때 호출되도록 약속되어 있기 때문에
인스턴트가 생성되는 시점에서 해야 되는 필수적인 일을 이 함수에 적어놓으면
초기화 작업을 할 수 있다.
'PHP > 생활코딩' 카테고리의 다른 글
5/31 생활코딩 (0) | 2020.05.31 |
---|---|
5/30(3) 생활코딩 (0) | 2020.05.30 |
5/30 생활코딩 (0) | 2020.05.30 |
5/29(7) 생활코딩 (0) | 2020.05.30 |
5/29(6) 생활코딩 (0) | 2020.05.30 |
댓글