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 - 속성 또는 메서드가 클래스 내에서만 액세스

이번회차에선 생성자, 소멸자, 액세스 수정자에 대해 배웠다.

다음 회차에선 액세스 수정자를 이용한 것을 배워볼 것이다.

반응형