public function __construct($template = '', array $data = array())
{
if ($template !== '') {
$this->setTemplate($template);
}
if (!empty($data)) {
foreach ($data as $name => $value) {
$this->$name = $value;
}
}
}
의 사용 (http://www.devshed.com/c/a/PHP/PHP-Composite-View-Design-Pattern-Introducing- the-Key-Concepts/1 /). 어쨌든, 조금 혼란 스럽네요, $this->$name = $value;
성명.PHP 코드 : DevShed의 복합보기 튜토리얼이있어이 키워드
일반적으로 클래스 속성에 대해 그리고/또는 해당 클래스 내에서 클래스의 메서드를 호출 할 때 $this
을 사용합니다. 플러스 성명은 두 $
이야. 이상한거야! 그렇다면 $this->$name = $value
은 foreach 루프에 정의 된 $name
을 말하는 것입니까? 그렇다면이 사용법이나 로직에 대해 누군가 설명 할 수 있습니까?
미리 감사드립니다.
여기에 맞습니다. 'name'이 (가) 실제 속성으로 존재하지 않는 경우에만 true입니다. 이 경우 마법 속성은 호출되지 않습니다. – KingCrunch
@KingCrunch - 예, 이것이 사실입니다. 내 대답을 편집하여 조금 더 명확하게 만듭니다. – mrwooster
나는 그것을 얻었습니다. AbstractView 클래스를 뒤범벅. $ this-> $ name은 __set에 의해 동적으로 생성 된 $ 이름을 가리키는 것으로 보입니다. 따라서 클래스 속성이 클래스에 명시 적으로 정의되어 있지 않다면 사용자는 기본적으로 다음을 수행 할 수 있습니다. $ foo = new AbstractView; $ foo-> bar = 'stuff'; 따라서 __set 함수가 호출되고 abstractview 클래스의 bar 클래스 속성을 만듭니다. 그리고 $ this-> $ name = $ value 문은 AbstractView 클래스를 통해 정의 된 다른 마법 메서드에 사용되는 placeholder라는 $ name 변수를 참조합니다. 따라서 추가 $를 사용하십시오. 정말 고맙습니다! – mythicalprogrammer