티스토리 뷰
php 클래스의 기본2
앞의 내용에 이어서 클래스의 접근제한자와 전연변수의 접근에 대해서 학습.
자동차 클래스
앞에서 블랙박스를 만들었으니 이번에는 자동차를 만들어보자.
자동차 클래스에는 자동차의 종류(세단), 색상, 페달이 존재하며 자동차객체가 만들어 진 이후에 접근하여 동작 해 보자.
<?php header("Content-type:text/html;charset=utf-8"); class CarClass { public static $carType = '세단'; const color = "Red"; private $doArr = array("accel"=>"가속","brake"=>"정지"); public function CarClass() { echo "CarClass constructor <br />"; } public function info() { //print self::$carType . "<br />"; print self::color . "<br />"; } public function handler($pedal) { $doArr = $this->doArr; echo $doArr[ $pedal ] . "<br />"; } } $a = new CarClass(); echo CarClass::$carType ."<br />"; $a -> info(); $a -> handler("accel"); ?>
1 : 한글을 깨지지않고 출력하기 위해서 utf8로 인코딩 설정.
4 : CarClass 생성.
6 : static 변수는 인스턴스를 생성하지않은 클래스자체로 참조하여 접근가능한 변수이다. 그만큼 메모리를 많이 차지 하게 되며
물론 CarClass내부에서도 static 변수를 쓸 수있다.
당연히 static은 외부(클래스를 벗어난)에서 사용가능 해야하므로 접근제한자는 public 이다.
7 : 상수는 const로 선언하며 '$'라는 변수의미 없이 순수한 상수 문자로 적어준다.
9 : 접근제한자가 private - 오로지 클래스 내부에서만 사용가능하며 상속하더라도 쓸 수 없다.
변수의 형태를 보면 연관배열로 되어있어 보통 일반배열로 작성한 경우 $doArr = Array("가속", "정지"); 로 쓰게되고
$doArr[0], $doArr[1].. 과 같은 방식으로 접근한다. 일반배열의 장점은 반복문을 사용할 수 있다는 장점이 있고
연관배열은 내용을 쉽게 파악할수 있는 대신 직접 네이밍을 적어줘야 하므로 코드가 길어진다.
11 : 생성자 함수. 앞에서는 __construct를 썼는데 클래스 이름을 적어줘도 된다.
16 : info메서드.
carType과 color에 대한 정보를 출력하는데 일단 carType은 주석처리 되었다.
static변수나 상수 모두 'self::변수/상수'로 접근한다.
22 : handler메서드.
페달여부의 함수인데 여기서 주목해야 할 점은 클래스 전역변수인 9번째 줄의 $doArr 배열을 '$this->doArr'로 접근해야 한다.
이후 핸들러 함수내부의 $doArr 9번째 줄의 변수와는 다른 변수이며 여기에 $this->doArr를 대입하여 동일한 scope를 갖게된다.
29 : $a에 자동차 클래스를 만든다.
31 : static으로 선언된 변수에 접근하기 위해서는 '클래스명::$변수'의 형식으로 선언한다.
32 : 클래스의 메서드를 호출할 경우 '클래스->메서드' 형태로 작성.
33 : 마지막으로 핸들러에 페달을 accel로 넘겨주었다.
출력
carClass constructor
세단
Red
가속
'■ 백엔드 ■ > PHP' 카테고리의 다른 글
php-excel-reader Document (0) | 2014.02.04 |
---|---|
php oop의 기본3 (0) | 2014.02.02 |
php oop의 기본 (0) | 2014.02.01 |
달력php -> js -> jquery (0) | 2013.12.31 |
include, require, include_once, require_once (0) | 2013.12.12 |