검색결과 리스트
특수메소드에 해당되는 글 1건
- 2017.05.10 PHP Magic Method (특수메소드)
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
매직메소드(특수메소드)는 항상 클래스에 정의되어 있는 메소드들을 말하며, 이중 밑줄(__)로 시작한다.
그래서 일반함수들은 이중 밑줄(__)로 함수명을 시작하는 것을 권장하지 않는다.
1) __construct(), __destruct()
__construct()는 클래스에 생성자로 클래스 인스턴스화 시 처음으로 호출한다.
CI에 보면 parent::__construct();를 호출하는 것을 종종 보게 되는데, __construct()는 상속 시 부모의 생성자를 자동으로 호출하지 않는다.
__destruct()는 클래스의 소멸자로 인스턴스 파괴 시 호출된다.
마찬가지로 상속한 부모의 소멸자는 자동으로 호출하지 않으므로 parent::__destruct()를 호출해야 한다.
class Foo {
public function __construct() {
}
public function __destruct() {
}
}
2) __get(), __set()
__get()은 클래스의 프로퍼티 값을 조회했을 때 실행된다.
__set()는 클래스의 프로퍼티 값을 지정했을 때 실행된다.
class Foo {
$id;
$name;
public function __get($field) {
$value = "";
if($field == "id") {
$value = $this->id;
}
return $value;
}
public function __set($field, $value) {
if($field == "id") {
$this->id = $value;
}
}
}
$obj = new Foo();
$obj->id= 111;
echo $obj->id;
3) __isset(), __unset()
__isset()은 클래스 내의 프로퍼티를 isset()했을때 실행되는 메소드이다.
__unset()은 클래스 내의 프로퍼티를 unset()했을때 실행되는 메소드이다.
class Foo {
$id;
$name;
public function __isset($field) {
echo "call isset : " . $field;
}
public function __unset($field) {
echo "call unset : " . $field;
}
}
$obj = new Foo();
isset($obj->id);
unset($obj->id);
4) __call(), __callstatic()
__call()은 클래스에 정의되지 않은 메소드를 호출했을 때 실행되는 함수이다.
__callstatic()은 _call()과 같은 기능이지만 static으로 메소드를 호출했을 때 실행되는 함수이다.
class Foo {
public function __call($method, $args) {
echo "unknown method : " . $method;
return false;
}
}
5) __toString()
클래스의 인스턴스의 상태를 확인하기 위한 인스턴스의 문자열화를 진행한다.
class Foo {
$id;
$name;
public function __toString() {
return $this->id . " : " . $this->name;
}
}
$obj = new Foo();
$obj->id = 111;
$obj->name = "tiger";
echo $obj;
6) __debugInfo()
클래스의 인스턴스를 var_dump()했을 때 호출되는 메소드이다.
class Foo {
$id;
$name;
public function __construct($id, $name) {
$this->id = $id;
$this->name = $name;
}
public function __debugInfo() {
return [
'id' => $this->id,
'name' => $this->name
];
}
}
$obj = new Foo(111, "tiger");
var_dump($obj);
'-- PHP' 카테고리의 다른 글
로그인 시 비밀번호 javascript 암호화 -> php 복호화 (0) | 2020.04.08 |
---|---|
PHP startsWith, endsWith (0) | 2018.04.16 |
PHP 결과에 생기는  값 제거 (0) | 2016.05.23 |
PHP5.3에서 json_encode 후 한글 깨짐 (0) | 2016.04.21 |
php @ (0) | 2015.03.02 |
RECENT COMMENT