|
||||||||||||||
|
|
13. 장. 클래스와 객체class클래스(class)는 특정 변수들 그리고 이 변수들과 같이 동작하는 함수의 집합체이다. 다음 예제코드처럼 클래스를 선언할수 있다:
위 코드에서 Cart라는 이름을 갖는 클래스는 카트(cart)를 위한 품목의 연관 배열, 그리고 카트에 아이템을 추가하거나 제거하는 두 개의 함수로 구성되어있다.
PHP 4에서는 다음 사항에 주의해야 한다.
PHP 4에서 var로 변수를 선언할때는 상수로만 초기화될수 있다. 상수가 아닌 값으로 초기화하려면, 클래스로부터 객체를 생성할때 자동적 으로 호출되는 함수에서 초기화할 필요가 있다. 이런 함수를 생성자(constructor) 라고 부른다. (다음글을 보세요)
class는 타입이다. 즉, 실제 변수를 위한 청사진이다. new 연산자를 사용하여 원하는 이런 타입의 변수를 생성할 수 있다.
위 예제 코드는 Cart클래스의 $cart, $another_cart 객체를 생성한다. $cart의 add_item() 함수는 $cart 에 품목 번호가 10인 아이템 1개를 추가하고, $another_cart에 품목 번호가 0815인 아이템 3개를 추가한다. $cart와 $another_cart 둘다 add_item(), remove_item() 함수와 items변수를 갖는다. 이들 모두 서로 다른 함수와 변수들이다. 이런 객체는 파일시스템의 디렉토리에 비유될수 있다. 파일시스템에서는 서로 다른 디렉토리에 있으면 두개의 다른 README.TXT파일을 저장할수 있다. 이 파일 각각에 접근하기 위해서는 최상위 디렉토리에서 각 파일로의 경로를 지정해 줘야 하듯이, 이런 각 함수를 호출하고자 한다면 각 함수의 완전한 이름을 지정해야 한다: PHP에서 최상위 디렉토리는 전역 네임스페이스를 갖고, 경로 구분자로 ->를 사용할수 있다. 따라서, $cart->items과 $another_cart->items 은 서로 다른 변수를 지칭하는 것이다. 변수는 $cart->$items이 아니라, $cart->items 로 지정해야 한다는 것에 주의해야 한다. 즉, PHP에서 변수명은 오직 한개의 달러사인($) 기호만 허용된다.
클래스의 선언부에서는 프로그램이 객체에 접근할때 어느 객체명 밑에 속해있을지 알수 없다: Cart 클래스가 선언된 후에 그 객체가 $cart나 $another_cart 객체명을 갖을지 알수 없는것이다. 따라서, Cart 클래스 선언부 안에서 $cart->items라고 쓸수 없다. 대신에, 클래스내의 함수나 변수에 접근할 수 있게 하려면 '내 소유'나 '현재 객체'라고 해석할수 있는 $this라는 의사-변수를 사용할수 있다. 따라서, '$this->items[$artnr] += $num' 이라는 코드는 '내 소유의 items 배열의 $artnr카운터를 $num만큼 더하라' 또는 '현재 객체의 items 배열의 $artnr 카운터를 $num만큼 더하라'고 해석할 수 있다.
| |||||||||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "PHP 매뉴얼". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |