개요
클래스(Class)는 PHP에서 사용자가 직접 정의할 수 있는 데이터 타입입니다. 새로운 클래스를 정의하려면 class 키워드를 사용하고, 그 뒤에 클래스 이름을 작성합니다. PHP의 명명 규칙에 맞는 유효한 이름이라면(단, PHP 예약어는 제외) 어떤 것이든 클래스 이름으로 사용할 수 있습니다. 클래스의 구성 요소들은 클래스 이름 뒤에 오는 중괄호({}) 안에 정의됩니다.
기본 문법
class myclass{
//
}클래스 내부에는 상수, 변수(프로퍼티), 그리고 함수와 유사한 형태의 메서드를 포함할 수 있습니다.
클래스 정의 예제
다음 예제는 클래스를 정의하는 기본적인 방법을 보여줍니다.
예제
<?php
class myclass{
const MYCONSTANT=100;
public $var1="Hello";
function dispvar(){
echo $this->var1;
}
}
?>메서드와 $this의 이해
클래스 내부에 정의된 함수를 메서드(method)라고 부릅니다. 메서드 내부에서는 의사 변수(pseudo-variable)인 $this를 사용하여 해당 메서드를 호출한 객체의 컨텍스트에 접근할 수 있습니다.
만약 메서드가 static으로 선언되었다면, 객체 생성 없이 클래스 이름을 통해 직접 접근할 수 있습니다. 참고로, static이 아닌 메서드를 정적(static) 방식으로 호출하는 행위는 PHP 7부터 공식적으로 지원 중단(deprecated)되었습니다.
객체 생성하기
new 연산자는 주어진 클래스의 새로운 객체를 생성합니다. 이때 new 키워드 앞에 클래스 이름과 괄호를 반드시 명시해야 합니다.
- 괄호 안에 인수가 없으면, 프로퍼티가 기본값으로 초기화된 객체가 생성됩니다.
- 클래스가 매개변수를 받는 생성자(constructor)를 정의하고 있다면, 그에 맞는 개수의 인수를 전달해야 합니다.
- 객체(인스턴스)를 생성하기 전에 해당 클래스가 반드시 먼저 정의되어 있어야 합니다.
예제
<?php
class myclass{
const MYCONSTANT=100;
public $var1="Hello";
function dispvar(){
echo $this->var1;
}
}
$obj=new myclass();
$obj->dispvar();
?>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Hello