이번엔 생성자에 대해 다뤄보겠습니다.
생성자란 ?
메모리상에 객체를 생성시켰을 때 가장 먼저 수행할 작업을 기술하는 메소드 입니다.
조금 더 쉽게 얘기하자면, 클래스 내에 해야 할 일들을 지정해 주는 것 입니다.
public function __construct
생성자의 사용법은 위와 같습니다.
코드로 확인해보겠습니다.
<?php
class Sports{
private $a;
private $b;
private $c;
public function __construct($a, $b, $c){
$this->first = (is_string($a))? $a : "Error";
$this->second = (is_string($b))? $b : "Error";
$this->third = (is_string($c))? $c : "Error";
}
public function FavoriteSports(){
return sprintf("My Favorite Sports <br/>first => %s <br/> second => %s <br/> third => %s", $this->first, $this->second, $this->third);
}
}
$instance1 = new Sports("bowling", "basketball", 1);
echo $instance1->FavoriteSports();
?>
private 을 이용하여 같은 클래스 내에서만 유효한 a,b,c 변수를 만들고 Sports 라는 Class를 만들었습니다.
안의 세부내용은 __construct 생성자를 이용해 인스턴스 생성 시 다음과 같이 초기 값을 세팅해주었습니다.
a,b,c 각각의 매개변수의 인자값을 is_string으로 문자열인지 확인 후 참이면 a,b,c 거짓이면 Error 라는 문자열이 first, second, third 의 값으로 정해지게끔 코드를 작성했습니다.
이후 FavoriteSports 라는 메소드를 생성하였고, sprintf 함수로 괄호 안에있는 내용을 return 받습니다.
My Favorite Sports 다음 html에서 개행이 적용되게끔 <br/> 기호를 넣어주었고 first, second, third => %s 로 뒤쪽에 있는 $this->first,second,third 의 값을 넣습니다.
instance1 이라는 인스턴스를 Sports 클래스를 통해 생성하였습니다.
각 매개변수 자리에는 "bowling" "basketball" 이라는 문자와 1 이라는 숫자형을 대입해주었습니다.
그러고난후 Sports 클래스 내부에 있는 FavoriteSports 메소드를 호출해보았습니다.
각 인자값들이 잘 들어갔으며 third 부분은 1이 문자형이 아니기 때문에(is_string) Error 라는 문자열이 대입된 모습입니다.
'php' 카테고리의 다른 글
클래스 및 객체(7) (0) | 2021.08.19 |
---|---|
클래스 및 객체(6) (0) | 2021.08.18 |
클래스 및 객체(4) - $this-> 의 이해 (0) | 2021.08.05 |
클래스 및 객체(3) (0) | 2021.08.05 |
클래스 및 객체(2) (0) | 2021.08.04 |