본문 바로가기
PHP/생활코딩

5/30(2) 생활코딩

by SKim입니다 2020. 5. 30.

* 오늘의 진도

 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

댓글