php

클래스 및 객체(5)

말랑Cow 2021. 8. 17. 14:16
반응형

이번엔 생성자에 대해 다뤄보겠습니다.

 

생성자란 ?

 

메모리상에 객체를 생성시켰을 때 가장 먼저 수행할 작업을 기술하는 메소드 입니다.

조금 더 쉽게 얘기하자면, 클래스 내에 해야 할 일들을 지정해 주는 것 입니다.

 

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 라는 문자열이 대입된 모습입니다.

 

반응형