PHP > LIBRARY > Magic_methods
 
PHP
Library
Tip&Tech
Q&A
 
PHP Function
phpschool
그누보드
LIBRARY
  HOME > PHP > LIBRARY
 
Magic_methods
작성일 : 19-01-08
조회 : 19  

Magic_methods

class 안에서 앞에 __가 붙은 method들이 있음

이 methods들은 내가 쓰고 싶을때 쓰는게 아니고, 특정 상황에서 자동으로 실행되는 method들임

(e.g: __construct는 class가 선언될때 실행되고, desturct는 class 지울때(unset) 실행됨)

__destruct

입력된 파라미터들을 지우는 함수(unset과 함께 쓰임)

<?php class Student{ function __construct($name){ $this->name = $name; } function __destruct(){ echo "Destructed"; } } $StudentObj = new Student("Tim"); unset($StudentObj); // Destructed ?>

__toString

class에 echo를 붙여서 내가 설정한 글이 나오게 하는 기능

<?php class Person{ function __construct($name){ $this->name = $name; } function __toString(){ return "Hello My name is ".$this->name; } } $p1 = new Person('Wonjinsin'); echo $p1; //Hello My name is wonjinsin ?>

__set_state

class안에 배열을 나타내주는 함수(eval과 var_export와 같이 쓰임)

eval = 파라미터안에 php문법있으면 문자자체가 아닌 php 문법으로 자동변환

var_export = var_dump와 비슷하지만 php 문법으로 보여줌

<?php class A { public $var1; public $var2; public static function __set_state($an_array) // As of PHP 5.1.0 { $obj = new A; $obj->var1 = $an_array['var1']; $obj->var2 = $an_array['var2']; return $obj; } } $a = new A; $a->var1 = 5; $a->var2 = 'foo'; eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array( // 'var1' => 5, // 'var2' => 'foo', // )); var_dump($b); ?>

__invoke

class 인스턴스를 함수처럼 사용하기 위해서는 invoke 함수가 필요하다

<?php class A { public $var1; public $var2; public function __invoke() // As of PHP 5.1.0 { echo "This is for invoke function"; } } $a = new A; $a(); // This is for invoke function ?>

__debuginfo

var_dump(class 인스턴스)를 넣으면 모든 public, protected, private 변수들을 다 보여주는데, 이때에 __debuginfo안에 배열로 변수를 설정하면 그것만 보여줌

주의! 무조건 return값은 array여야 함

<?php class C { private $prop; public function __construct($val) { $this->prop = $val; } public function __debugInfo() { return [ 'propSquared' => $this->prop ** 2, ]; } } var_dump(new C(42)); // object(C)#1 (1) { ["propSquared"]=> int(1764) } ?>

__sleep

Class를 serialize할 때에 나타나는 magic method

내가 설정한 변수만 serialized되서 나옴


 
 

Total 77
번호 제   목 조회
공지 php 라이브러리 167
77 매직해시(MAGIC HASHES) 취약점 22
76 Trait 21
75    Trait 23
74 Overloading 19
73    Overloading 19
72 Type hinting/Type 설정하기/Throw error 20
71    Type hinting/Type 설정하기/Throw error 19
70    Type hinting/Type 설정하기/Throw error 19
69 object clone 21
68    object clone 21
67 serialize / unserialize 21
66 spl_autoload_register(오토로드) 21
65 window에서 composer깔기 20
64 Exception/try/throw/catch 22
63 Error의 종류 19
62    Error의 종류 18
61    Error의 종류 17
60 eval 19
59 Magic_methods 20
58    Magic_methods 46
 1  2  3  4  
 
개인홈페이지 덤벙닷컴은 프로그래머와 디자이너위한 IT커뮤니티 공간입니다.
Copyright ⓒ www.dumbung.com. All rights reserved.