클래스 상수를 사용한 PHP 객체 액세스 (PHP Object access with class constant)


문제 설명

클래스 상수를 사용한 PHP 객체 액세스 (PHP Object access with class constant)

PHP에서 멤버 이름이 클래스 상수로 지정된 개체의 멤버에 액세스할 수 있습니까?

다음 예를 살펴보세요.

class X{
    const foo = "abc";
}

class Y{
    public $abc;
}

$y = new Y();

$y‑>X::foo = 23; //This does not work

파서는 마지막 줄을 수락하지 않지만 이것이 내가 원하는 것입니다. 클래스 상수 X::foo에 저장된 이름으로 필드에 액세스하고 싶습니다. 이를 달성하는 구문이 있습니까?


참조 솔루션

방법 1:

Use variable variables, either via a temp or directly:

$name = X::foo;          // Via temp var
$y‑>$name = 23;          // Access the member by the string's content
var_dump($y‑>{X::foo});  // Dumps 23

Working sample here.

방법 2:

You should write your code like this

$y‑>{X::foo} = 23;

Hope it helps

(by gexicideNiels Keurentjesphp‑dev)

참조 문서

  1. PHP Object access with class constant (CC BY‑SA 2.5/3.0/4.0)

#PHP #class-constants






관련 질문

bash의 rsync가 php 생성 --exclude-from 파일을 구문 분석하지 않음 (rsync in bash not parsing php-generated --exclude-from file)

PHP 배열 값 저장 (PHP Save array value)

검색으로 배열에서 특정 데이터 가져오기 (get specific datas from a array by a search)

창 서비스를 사용하여 PHP 파일 트리거 (Trigger a php file using window service)

yii2 컨트롤러 작업 주입은 어떻게 작동합니까? (How does the yii2 Controller action injection works)

php와 drupal을 사용하여 pdf를 텍스트로 변환 (pdf to text convert using php and drupal)

PHP에서 카테고리 및 하위 카테고리 목록 검색 (Retrieve Category & Subcategory list in PHP)

PDO - COUNT(*) 결과를 얻습니까? (PDO - get the result of a COUNT(*)?)

PHP - MySQL 쿼리 문제 (PHP - Mysql query problem)

제품용 Reviews.io API의 Foreach 루프 (Foreach loop in Reviews.io API for Products)

숫자를 나누고 점 뒤에 하나의 숫자를 유지하십시오. (Split the number and keep one number after the dot)

내 메시지 입력이 데이터베이스에 들어가지 않습니다. (My message input doesn't get into database)







코멘트