백엔드
PHP __get, __set 매직 메소드
PHP 에는 __get()
, __set()
이란 특별한 매직 메소드가 있습니다.
이 메직 메소드의 사용에 대해서 여러 논란이 있기는 하지만, 개인적으로 적절히 사용을 한다면 매우 유용하다고 생각합니다.
매직 메소드를 구현하는 방법은 여러가지 있지만 그 중 간단하면서도 유요한 코드를 하나 소개합니다.
public function __get($name)
{
if ( property_exists($this,$name) ) {
return$this->{$name};
}
$method_name = "get_{$name}";
if ( method_exists($this,$method_name) ) {
return$this->{$method_name}();
}
trigger_error("Undefined property $name or method $method_name");
}
public function __set($name,$value)
{
if ( property_exists($this,$name) ) {
$this->{$name} =$value;
return;
}
$method_name = "set_{$name}";
if ( method_exists($this,$method_name) ) {
$this->{$method_name}($value);
return;
}
trigger_error("Undefined property $name or method $method_name");
}
매직 메소드는 프로그래머에 의해 직접 호출되지 않습니다.
실제로 PHP 는 뒤에서 메소드를 호출합니다.
이것이 바로 매직 메소드
라고 불리는 이유 입니다.
직접 호출되지 않고 프로그래머가 꽤 강력한 일을 할 수 있기 해주기 때문입니다.
@property
Magic Property Of a Class
매직메소드에 대한 자동 완성은 제공되지 않는다.
@propery
주석을 사용해 자동 완성을 제공할 수 있지만 이러한 작업이 지속적으로 유지되어 합니다.
tigger_error 함수 / 사용자가 오류/경고/알림 메세지를 생성할 수 있게 합니다.
사용자 오류 조건을 트리거하는 데 사용되며 내장 오류 핸들러 또는 새 오류 핸들러 ( set_error_handler () ) 로 설정된 사용자 정의 함수와 함께 사용할 수 있습니다 .
PHP 클래스 매직메소드 __get(), __set() 예제
PHP: 클래스 매직메소드 __get(), __set() 문제
0개 댓글