PHP, Tutorial, 객체 지향 |
=====
PHP 에서 클래스, 속성, 연산 만들기
class classname{
var $attribute1;
function operation1( $param1 ){ }
}
=====
생성자
__construct() 라는 이름을 가진다.
=====
소멸자
__destruct() 라는 이름을 가진다.
=====
생성
new 를 이용하여 생성한다.
=====
클래스 속성 사용하기
instance->attributeName 으로 접근한다.
=====
GET, SET 함수
__get, __set 함수를 가진다.
해당 attribute 에 접근하면 자동으로 get, set 함수가 불리게 된다.
=====
private 와 public 으로 접근 제어하기
기본은 public. private 으로 선언된 녀석은 클래스 내부에서만 접근.
protected 는 클래스 내부와 하위 클래스에서만 사용된다.
=====
상속 구현하기
extends 를 이용한다.
=====
오버라이딩
오버라이딩은 제공한다.
=====
final 을 사용하여 상속과 오버라이딩 막기
다중상속은 지원하지 않는다. 단일 상속만을 지원한다.
=====
인터페이스 구현
interface Displayable{
function display();
}
implements 로 구현한다.
=====
상수 정의
const 를 이용해 상수를 정의할 수 있고,
해당 상수는 생성 없이 사용할 수 있다.
접근은 :: 를 통해서 한다.
예를 들어 Math::Pi
=====
static method
static 을 키워드로 하여 함수를 정의하면,
마찬가지로 Math::squared( 4 ) 와 같이 접근 가능하다.
=====
클래스 타입 검사와 타입 hinting
instanceof 를 사용하여 클래스 검사를 할 수 있고,
함수정의시 check_hint( SomeClass $someclass ) 와 같은 parameter 정의로
클래스 검사( 이를 hinting 이라 한다. )를 할 수 있다.
=====
객체 복사
$a = clone $b;
위와 같은 코드를 통해 b 의 복사본을 만들 수 있다.
clone 의 기본 행동을 바꾸고 싶으면 원 클래스에 __clone() 을 오버라이딩 하면 된다.
단 이 녀석은 생성자나 소멸자처럼 직접 호출할 수는 없다.
=====
추상 클래스 사용하기
abstract 키워드를 사용하여 만들 수 있다.
추상 함수를 가지고 있는 클래스는 추상 클래스여야 한다.
=====
__call() 로 메소드 오버로딩하기
public function __call( $method, $p ){
if ( $method == 'display' )
if ( is_object( $p[0] ) )
$this->displayObject( $p[0] );
else if ( is_array( $p[0] ) )
$this->displayArray( $p[0] );
}
display 함수를 호출하면 자동으로 이 녀석이 호출된다.
__call 함수는 declare 안 된 함수를 호출했을 때만 불린다. 예를 들어 display 라는 함수가 정의되어 있었다면, __call 대신 display 함수가 대신 불린다.
=====
__autoload() 사용하기
클래스 메소드( static method )가 아닌 독립 함수( instantce method )이며,
선언되지 않은(require 혹은 include 안 된) 클래스를 생성하려 할 때 자동적으로 호출된다
주로 필요한 클래스의 인스턴스를 만들려고 할 때 클래스가 선언된 파일을 불러들이는 용도로 주로 사용
function __autoload( $name ){
include_once $name.'.php';
}
( 만약 Foo.php 에 있는 무언가를 사용하려면 [ include_once( "./Foo.php" ); ] 로 include 를 해주고 사용해야 하지만, __autoload 가 위와 같이 정의되어 있다면 include_once 를 따로 호출하지 않아도 된다. )
=====
Iterator 와 반복 구현하기
IteratorAggregate interface 를 implement 하는 객체를 만든 다음,
iterator interface 를 반환하는 getIterator 함수를 만들어야 한다.
getIterator 에서 반환하는 녀석은 Iterator 를 구현한 class 여야 한다.
Iterator 를 구현하는 class 는 다음을 구현해야 한다.
* 생성자는 필요하지 않지만 반복할 아이템 수를 정하고 현재 데이터 아이템에 대한 연결 설정에 좋다.
* rewind() 는 포인터의 위치를 처음으로 되돌린다.
* valid() 는 현재 위치에 데이터가 더 남아있는지 알려줘야 한다.
* key() 함수는 데이터 포인터의 값을 리턴해야 한다.
* value() 함수는 데이터 포인터가 가리키고 있는 value 를 리턴해야 한다.
* next() 는 데이터 포인터를 다음으로 이동시킨다.
=====
클래스를 문자열로 반환하기.
__toString() 함수를 구현하면 echo 에서 자동으로 불린다.
=====
reflection API 사용하기
$class = new ReflectionClass( 'className' );
echo $class;
위와 같이 호출하면 className class 에 대한 모든 정보를 알 수 있다.
'프로그래밍 놀이터 > Web' 카테고리의 다른 글
내 Rest API 가 정말 Restful 한지 체크하기. (0) | 2013.11.22 |
---|---|
[PHP] 배열( array ) tutorial (2) | 2013.11.21 |
[PHP Tutorial] 문자열 연산과 정규 표현식 (0) | 2013.11.11 |
Mini Device Lab - 여러가지 스마트 단말에서의 반응형 웹을 쉽게 확인하자 (0) | 2013.11.11 |
chrome 에서 request, response header 보기. (0) | 2013.11.07 |
댓글