PHP OOP - 클래스와 객체
클래스는 객체의 템플릿이고 객체는 클래스의 인스턴스입니다.
OOP 케이스
과일이라는 클래스가 있다고 가정해 보겠습니다. 과일은 이름, 색상, 무게 등과 같은 속성을 가질 수 있습니다. 이러한 속성의 값을 유지하기 위해 $name, $color 및 $weight와 같은 변수를 정의할 수 있습니다.
개별 객체(사과, 바나나 등)가 생성되면 클래스에서 모든 속성과 동작을 상속하지만 각 객체는 속성에 대해 다른 값을 갖습니다.
클래스 정의
클래스는 class
키워드 뒤에 클래스 이름과 한 쌍의 중괄호({})를 사용하여 정의됩니다. 모든 속성과 메서드는 중괄호 안에 들어갑니다.
통사론
<?php
class Fruit {
// code goes here...
}
?>
아래에서 두 개의 속성($name 및 $color)과 $name 속성을 설정하고 가져오기 위한 두 개의 메서드 set_name() 및 get_name()으로 구성된 Fruit이라는 클래스를 선언합니다.
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
참고: 클래스에서 변수는 속성이라고 하고 함수는 메서드라고 합니다!
객체 정의
클래스는 객체 없이는 아무것도 아닙니다! 클래스에서 여러 개체를 만들 수 있습니다. 각 개체에는 클래스에 정의된 모든 속성과 메서드가 있지만 속성 값은 서로 다릅니다.
클래스의 객체는 new
키워드를 사용하여 생성됩니다.
아래 예에서 $apple 및 $banana는 Fruit 클래스의 인스턴스입니다.
예시
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
아래 예제에서는 $color 속성을 설정하고 가져오기 위해 Fruit 클래스에 두 가지 메서드를 더 추가합니다.
예시
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - $this 키워드
$this 키워드는 현재 개체를 참조하며 메서드 내에서만 사용할 수 있습니다.
다음 예를 보십시오.
예시
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
그렇다면 $name 속성의 값은 어디에서 변경할 수 있습니까? 두 가지 방법이 있습니다.
1. 클래스 내부(set_name() 메서드를 추가하고 $this를 사용):
예시
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. 클래스 외부(속성 값을 직접 변경하여):
예시
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instanceof
키워드를 사용하여 instanceof
객체가 특정 클래스에 속하는지 확인할 수 있습니다.
예시
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>