2012-09-27 3 views
1

추상 클래스 (Model)의 Magic 메서드 __set()에 문제가 있습니다. 모델을 확장하는 클래스의 속성을 할당 할 수 없습니다. 어느 쪽도 아니 __set 방법에서 변수의 이름을 인쇄하려고하지 :추상 클래스에서 선언 된 PHP 마법 메서드 __set 확장 클래스 속성 할당을 피하십시오.

abstract class Model 
{ 
public $data; 
public function __set($name, $value) 
{ 
echo $name; $this->$name = $value; 
} 
} 

class User extends Model 
{ 
public $id; 
} 

$u = new User(); 
$u->data = "hello"; //print "data"; 
$u->id = 123; //print NOTHING.. WHY¿? 
+0

echo $ u-> id // NOTHING – olavra

+0

'User' 클래스에'id'를 정의하지 않았습니까? –

답변

2

__set를 호출하면 정의되지 않은 속성에 값을 할당 할 때. 귀하의 경우 __set 두 속성이 정의되어 있고 존재하기 때문에 절대 호출되지 않습니다.

출력 내용은 두 속성에 대해 아무것도 아니며 속성 선언 부분 중 하나를 제거하고 출력 차이를 확인하십시오.