update : 2015.11.03
php.shukuma.com검색:
|
기초클래스클래스 정의는 class 키워드로 시작합니다. 그 다음으로 클래스명, 마지막으로 클래스의 프로퍼티 정의와 메서드 정의를 감싸는 curly brace 쌍이 뒤따릅니다. 클래스명은 유효한 이름 이어야 하며, PHP에 예약된 이름reserved word도 아니어야 합니다. 유효한 클래스명은 하나의 글자나 언더스코어로 시작하고, 이어 여러개의 문자,숫자,언더스코어가 뒤따라야 합니다. 정규표현식으로 표현하자면 다음과 같이 표현합니다.: ^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$. 클래스는 클래스만의 상수, 변수 를 가질 수(이른바 "프로퍼티") 있습니다. 그리고, 함수를 가질 수(이른바 "메서드") 있습니다. Example #1 간단한 클래스 정의
<?php $this 는 이 클래스가 인스턴스화 되었을 때에만 사용될수 있습니다. $this 는 객체에 대한 참조입니다.(보통은 해당 메서드를 소유하는 객체이지만, 다른 객체일 수도 있습니다. 메서드가 다른 객체내부에서 정적으로 불려지는 경우가 그러합니다.)
Example #2 $this 에 대한 몇가지 예제
<?php 위 예제의 출력: $this is defined (A) $this is not defined. $this is defined (B) $this is not defined. new클래스의 인스턴스를 생성하기 위해서는 new 키워드를 사용해야 합니다. 생성자 가 정의되어 있는한 객체가 생성될것이고, 에러가 발생하면 예외를 발생시킬 것입니다. 클래스가 인스턴스화 되기 위해서는 미리 정의 되어 있어야 합니다.(필수가 되는 경우가 있습니다.) 만약에 클래스명을 포함하는 문자열 변수가 있다면 new 와 함께 사용할수 있습니다. 해당 클래스의 새로운 인스턴스가 생성될 것입니다. 만약에 클래스가 네임스페이스내에 속한다면, 완전한 이름을 사용해야 합니다. Example #3 인스턴스 생성
<?php 클래스 컨텍스트 내에서는 new self 와 new parent 를 통해 새로운 객체를 생성하는게 가능합니다. 이미 생성된 클래스의 인스턴스를 새 변수에 할당할때, 새 변수는 이미 할당된 동일한 객체의 인스턴스에 접근하게 될것입니다. 이것은 함수로 인스턴스를 넘길때에도 동일하게 동작합니다. 이미 생성된 객체를 복사하는것은 복제 를 통해 가능할 것입니다. Example #4 객체 할당
<?php 위 예제의 출력: NULL NULL object(SimpleClass)#1 (1) { ["var"]=> string(30) "$assigned will have this value" } PHP 5.3.0 에서는 객체 인스턴스를 생성하는 다른 방법이 소개 되었습니다.: Example #5 새로운 객체 생성
<?php 위 예제의 출력: bool(true) bool(true) bool(true) 확장클래스는 다른 클래스로부터 메서드와 프로퍼티 를 extends 키워드를 사용하여 선언함으로써 상속받을수 있습니다. 다수의 클래스로부터 상속받는것은 가능하지 않습니다; 단 하나의 기본 클래스로부터 상속을 받을 수 있습니다. 상속된 메서드와 프로퍼티는 부모클래스의 정의된 이름과 똑같은 이름으로 재정의 될수 있습니다. 하지만, 부모 클래스의 메서드가 final 로 정의 되어 있다면, 재정의 될수 없습니다. 재정의된 원래의 메서드나 정적 프로퍼티는 parent:: 로 접근할 수 있습니다.
메서드를 재정의할때, 파라미터는 원래의 메서드와 동일해야 하며, 그렇지 않을 경우 Example #6 간단한 클래스 상속
<?php 위 예제의 출력: Extending class a default value ::classPHP 5.5 이후에는 class 키워드로 클래스의 이름을 알아낼수 있습니다. ClassName 의 완전한 클래스명을 ClassName::class 를 이용해서 얻어낼 수 있습니다. 특히, 네임스페이스를 갖춘 클래스일 경우 유용합니다.
Example #7 클래스명 확인
<?php 위 예제의 출력: NS\ClassName |