최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

■ 백엔드 ■/PHP

php oop의 기본2

serpiko 2014. 2. 2. 00:21

  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
댓글