php
[php OOP] 3주차(2회차) / php 생성자, 소멸자, 액세스 수정자
namgi
2022. 9. 18. 18:26
반응형
이번 시간에는 생성자(constructor), 소멸자(destructor), 액세스 수정자에 대해 배웠다.
생성자(constructor)
<?php
class Friend {
//'$name', '$age' 속성 설정
public $name;
public $age;
//set_name/age()와 같은 명령
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
//'get_name'이란 함수 정의
function get_name() {
return $this->name;
}
function get_age() {
return $this->age;
}
}
//변수 '$jimin'의 이름, 나이 정의
$jimin = new Friend("Jimin", "21");
//이름과 나이 출력
echo "이름: " . $jimin->get_name();
echo "<br>";
echo "나이: " . $jimin->get_age();
?>
생성자를 사용하면 'set_name/age()'을 호출하지 않아도 된다.
위 코드 사용시 코드 양을 줄일 수 있다.
생성자는 '__construct' 코드로 사용할 수 있다.
위 함수는 '두 개의 언더바(__)'로 사용된다.
코드 실행결과는 다음과 같다.
소멸자(destructor)
<?php
class Friend {
//'$name', '$age' 속성 설정
public $name;
public $age;
function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
function __destruct() {
//이름과 나이 출력
echo "이름: {$this->name} <br> 나이: {$this->age}";
}
}
//변수 '$jimin'의 이름, 나이 정의
$jimin = new Friend("Jimin", "21");
?>
소멸자를 사용하면 'get_name/age()'를 호출하지 않아도 된다.
코드 양이 더욱 더 줄어든 것이다.
생성자는 '__destruct' 코드로 사용할 수 있다.
위 함수는 '두 개의 언더바(__)'로 사용된다.
코드 실행결과는 다음과 같다.
액세스 수정자
<?php
class Friend {
//'$name', '$age', '$gender' 속성 설정
public $name;
protected $age;
private $gender;
}
$jimin = new Friend();
$jimin->name = 'Jimin'; //실행됨
$jimin->age = '21'; //에러
$jimin->gender = 'Women'; //에러
?>
위 코드를 실행하게 된다면,
아래의 화면처럼 에러가 난다.
에러가 나는 이유는
5, 6번 째 줄의 '$age'와 '$gender' 변수가
보호 돼 있고 비공개이기 때문이다.
오류가 안 나게 하려면 변수 'age'와 'gender'를
public(공개)상태로 만들면 된다.
- public - 속성 또는 메서드가 어디에서나 액세스
- protected - 속성 또는 메서드가 클래스 내, 파생된 클래스에서 액세스
- private - 속성 또는 메서드가 클래스 내에서만 액세스
이번회차에선 생성자, 소멸자, 액세스 수정자에 대해 배웠다.
다음 회차에선 액세스 수정자를 이용한 것을 배워볼 것이다.
반응형