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

Overloading

php의 Overloading은 다른 언어와 달리 접근불가의 property나 method를 정의하는 개념

(프로퍼티나 메소드를 동적으로 '생성한다'는 의미)

Property Overloading

__set()

접근불가(public이나 없을 때)의 property를 동적으로 생성될 때 실행되는 함수

(항상 paremaeter가 key와 value로 이루어져 있어야 함)

<?php class Student { public function __set( $propertyName, $propertyValue ) { echo"Property name is $propertyName and its value is $propertyValue"; } } $stuObj = new Student(); $stuObj->grade = "Good Grades"; // Property name is grade and its value is Good Grades ?>

__get()

접근불가(public이나 없을 때) 혹은 존재하지 않는 property를 불러올 때에 실행되는 함수

<?php class Student { public function __set( $propertyName, $propertyValue ) { echo"Property name is $propertyName and its value is $propertyValue"; } public function __get( $propertyName ) { return "Tim"; } } $stuObj = new Student(); echo $stuObj->studenName; // 존재하지 않기 때문에 Tim ?>

__isset()

접근 불가 프로퍼티(public이나 없을 때)에 대해 isset() 함수나 empty() 함수가 호출될 때 실행되는 함수

<?php class Student{ private $_extraInfo = array(); public function __isset($propertyName){ echo "Isset worked"; } } $objStudent = new Student(); isset($objStudent->birthCountry); ?>

__unset()

접근 불가 프로퍼티(public이나 없을 때)에 대해 unset 함수가 호출될 때 실행되는 함수

<?php class Student{ private $_extraInfo = array(); public function __unset($propertyName){ echo "Unset worked"; } } $objStudent = new Student(); unset($objStudent->birthCountry); ?>

mageic method 이용한 실제 사용 예시

<?php class Student{ private $_extraInfo = array(); public function __set($propertyName,$propertyValue){ $this->_extraInfo[$propertyName] = $propertyValue; } public function __get($propertyName){ if ( array_key_exists( $propertyName, $this->_extraInfo ) ) { return $this->_extraInfo[$propertyName]; } else { return null; } } public function __isset($propertyName){ if(isset($this->_extraInfo[$propertyName])){ echo "Property \$$propertyName is set.<br/>"; } else { echo "Property \$$propertyName is not set.<br/>"; } } public function __unset($propertyName){ unset($this->_extraInfo[$propertyName]); echo "\$$propertyName is unset <br/>"; } } $objStudent = new Student(); $objStudent->birthCountry =

 
 

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