문자열을 기반으로 PHP에서 속성을 얻는 방법은 무엇입니까? 전화하겠습니다 magic
. 그래서 무엇 magic
입니까?
$obj->Name = 'something';
$get = $obj->Name;
마치 …
magic($obj, 'Name', 'something');
$get = magic($obj, 'Name');
답변
이렇게
<?php
$prop = 'Name';
echo $obj->$prop;
또는 클래스를 제어 할 수있는 경우 ArrayAccess 인터페이스를 구현 하고이 작업을 수행하십시오.
echo $obj['Name'];
답변
중간 변수를 만들지 않고 속성에 액세스하려면 다음 {}
표기법을 사용하십시오 .
$something = $object->{'something'};
또한 예를 들어 루프에서 속성 이름을 만들 수 있습니다.
for ($i = 0; $i < 5; $i++) {
$something = $object->{'something' . $i};
// ...
}
답변
당신이 요구하는 것은 Variable Variables 입니다. 문자열에 변수를 저장하고 다음과 같이 액세스하면됩니다.
$Class = 'MyCustomClass';
$Property = 'Name';
$List = array('Name');
$Object = new $Class();
// All of these will echo the same property
echo $Object->$Property; // Evaluates to $Object->Name
echo $Object->{$List[0]}; // Use if your variable is in an array
답변
이 같은? 테스트하지는 않았지만 정상적으로 작동합니다.
function magic($obj, $var, $value = NULL)
{
if($value == NULL)
{
return $obj->$var;
}
else
{
$obj->$var = $value;
}
}
답변
속성 이름을 변수에 저장하고 변수를 사용하여 속성에 액세스하십시오. 이처럼 :
$name = 'Name';
$obj->$name = 'something';
$get = $obj->$name;
답변
답변
$ obj-> {$ obj-> Name}은 중괄호가 변수를 변수처럼 속성을 래핑합니다.
이것은 최고 검색이었습니다. 그러나 $ this를 사용하는 내 질문을 해결하지 못했습니다. 중괄호를 사용하는 환경의 경우에도 도움이되었습니다 …
Code Igniter를 사용한 예제 인스턴스 가져 오기
부모 클래스 인스턴스가있는 소스 라이브러리 클래스에서
$this->someClass='something';
$this->someID=34;
부모 인스턴스와 함께 다른 클래스에서 소스 해야하는 라이브러리 클래스
echo $this->CI->{$this->someClass}->{$this->someID};