php 클래스
PHP 2015. 6. 23. 16:45class 정의
키워드 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 |