가정하자, 나는 이것을 달성 할 수있는 방법은클래스 속성에 값을 할당 할 때 속성 이름 대신 상수를 사용할 수 있습니까?
$obj->property="value";
있는가,
define('property', 'test');
class myClass
{
public $test;
}
$obj=new myClass;
내가 같이 사용할 수, 클래스가?
가정하자, 나는 이것을 달성 할 수있는 방법은클래스 속성에 값을 할당 할 때 속성 이름 대신 상수를 사용할 수 있습니까?
$obj->property="value";
있는가,
define('property', 'test');
class myClass
{
public $test;
}
$obj=new myClass;
내가 같이 사용할 수, 클래스가?
예 :
$obj->{property}="value";
그게 내가 생각하기에 작동합니다 :/왜 왜 그런 식으로 왜 상수를 원했을까요? 그리고 그들은 전역 범위를 가지고 있습니다, 그래서 왜 필요하겠습니까? – RobertPitt
대답의 방법을 사랑해. 요점. –
@RobertPitt 몇 가지 사례를 생각해 볼 수 있습니다. '$ name'과'$ nameutf8' 두 가지 속성을 가진 클래스가 있다고 가정하십시오. 채워지는 내용은 UTF-8로 인코딩되었는지 여부에 달려 있습니다. 스크립트가 처리하는 데이터에 따라 상수를 변경할 수 있습니다. 예를 들어 처음에는 UTF-8을 지원하지 않으며 마이그레이션을 더 쉽게 수행 할 수 있습니다. – Artefacto
예, 당신은 @Artefacto 제안하지만 당신은 속성 값이 변경되지 않습니다 확신 할 때 상수를 사용해야합니다 수!
이 작업을 수행하는 가장 좋은 방법은 같은 stdClass를 만드는 것입니다 같은 클래스 : 당신이에`constants`을 설정하려는 이유는 단지
$Storage = new MyClass;
$Storage->SomeNewVar = "Some New Val";
echo $Storage->SomeNewVar;
이것은 전혀 대답하지 않는다. – Artefacto
참으로 오빠는 그가 무엇을 요구하고 있는지, 그리고 이미 자신이 대답했는지 잘못 이해하고 있습니다. – RobertPitt
참으로 사용할 수 있습니다
'variable'은 어느 쪽이든 다른 쪽을 할뿐입니다. 그리고 상수 키를 모두 대문자로 만드십시오. – RobertPitt
'$ obj -> $ variable'을 사용했지만'$ obj -> {constant}'를 사용하면 정말 이상 할 것입니다. – NikiC
@nikic 실제로이 사용은 덜 공격적이라고 생각합니다. '$ variable'가 단지 몇 가지 값을 취할 수 있다고 확신 할 때 제어 된 환경을 제외하고 임의의 속성을 거의 바꾸고 싶지는 않습니다. 내 대답은 로버트에게의 나의 대답을 보라. – Artefacto