php 클래스

PHP 2015. 6. 23. 16:45

class 정의

키워드 class를 사용하여 정의, 클래스명, 멤버변수(속성),
메소드(함수)를 포함하며 다중상속은 자바와 같이 인터페이스를 이용하여 구현


객체의 생성

키워드 new를 사용하여 생성

Example Code ----------

$object1 = new ClassName;
$object2 = new ClassName('param1', 'param2');


멤버변수(속성), 메소드(함수)의 선언

Example Code ----------

class Study {
	//멤버변수의 선언
	var $var0 = 0; //public으로 선언한 것과 동일, 사용하지 않음
	public $var1 = 0; //접근제한 없음
	protected $var2 = 0; //클래스 자신과 클래스를 상속한(서브클래스)에서만 접근
	private $var3 = 0; //클래스 자신에서만 접근
	const VALUE = 0; //상수 선언, 선언시 초기화된 값을 바꿀 수 없음

	//메소드의 선언, 
	public function method1() {
		/* running code */
	}

	protected function method2() {
		/* running code */
	}

	private function method3() {
		/* running code */
	}
	
	static function method4() {
		/* running code */
	}
}


객체의 접근(호출)

Example Code ----------

$object = new Study; //객체를 생성
$data1 = $object -> var1; //객체의 멤버변수에 접근하여 멤버변수의 값을 변수에 대입
$run1 = $object -> method1(); //객체의 메소드에 접근(호출)하여 반환된 값을 변수에 대입
$run2 = Study::method2(); //static으로 선언된 메소드는 ::로 호출, 객체가 아닌 클래스로 부터 호출

class Study {
	public $var1 = 0;
	const VALUE = 0;
	public function method1() {
		self::VALUE; //상수로 선언된 멤버변수는 ::로 접근
		/* running code */
	}
	static function method2() {
		/* running code */
	}
}


객체의 복사

Example Code ----------

$object1 = new ClassName; //객체를 생성
$object2 = $object1; //생성된 객체의 참조주소를 대입, $object1과 $object2는 동일한 객체에 접근함
$object3 = clone $object1; //생성된 객체를 복제하여 대입, $object1과 $object3은 각각 다른 객체를 참조함


생성자와 소멸자

//Study란 이름의 클래스를 선언
class Study {

	//생성자, 객체를 생성할 때 실행, 주로 객체의 초기화에 사용
	function __construct() {
		/* running code */
	}
	
	//소멸자, 마지막으로 참조하였거나 스크립트가 끝에 도달한 경우 실행
	function __destruct() {
		/* running code */
	}
}


상속

$object = new OpenCar;
$object->model = "myCar"; //상속받은 멤버에 접근

class Car {
	public $model;
	function drive() {
		/* running code */
	}
}

class OpenCar extends Car { //키워드 extends를 이용하여 상속
	public $open_state;
	function open() {
		/* running code */
	}
}


상속관계의 클래스 구분

$object = new OpenCar;
$object->drive(); //OpenCar 클래스의 drive() 호출

class Car {
	public $model;
	function drive() {
		/* running code */
	}
	
	//메소드에 final 선언을 하면 자식 클래스에서 메소드 오버라이딩을 할 수 없음
	final function mark() {
		/* running code */
	}
}

class OpenCar extends Car { //키워드 extends를 이용하여 상속
	public $open_state;
	function drive() { //부모클래스와 이름이 동일한 메소드(오버라이딩)
		/* running code */
	}
	function open() {
		self::drive(); //OpenCar 클래스의 drive() 호출
		parent::drive(); //Car 클래스의 drive() 호출
		/* running code */
	}
}


상속관계에서의 생성자

class Car {
	function __construct() {
		/* running code */
	}
}

class OpenCar extends Car {
	function __construct() {
		//자동으로 부모 클래스의 생성자를 호출하지 않음
		parent::__construct(); //모든 초기화 코드가 확실히 실행되려면 부모 클래스의 생성자를 호출해야 함
		/* running code */
	}
}

'PHP' 카테고리의 다른 글

php 사용자정의 함수  (0) 2015.06.23
php 파일 인클루드  (0) 2015.06.23
php 배열 array()  (0) 2015.06.23
php 반복문 for, while, do~while  (0) 2015.06.23
php 조건문 if~else, switch  (0) 2015.06.23
: