>  기사  >  백엔드 개발  >  선언 시 PHP 클래스 속성을 함수로 초기화할 수 없는 이유는 무엇입니까?

선언 시 PHP 클래스 속성을 함수로 초기화할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-25 17:26:44603검색

Why can't you initialize a PHP class property to a function at declaration time?

PHP 속성을 함수로 초기화할 수 없는 이유는 무엇입니까?

PHP 클래스 속성을 선언하는 동안 함수로 초기화하려고 하면 "Parse 오류가 발생합니다. : 구문 오류, 예기치 않은 T_FUNCTION" 오류가 발생할 수 있습니다.

<code class="php">class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}</code>

이는 PHP가 함수와 같이 상수가 아닌 값으로 속성을 초기화하는 것을 허용하지 않기 때문에 발생합니다. PHP 매뉴얼에서는 다음과 같이 설명합니다.

"속성은 public, protected 또는 private 키워드 중 하나를 사용하고 그 뒤에 일반 변수 선언을 사용하여 정의됩니다... 이 초기화는 상수 값이어야 합니다... 컴파일 시 평가할 수 있으며 평가를 위해 런타임 정보에 의존해서는 안 됩니다."

따라서 선언 시 속성에 함수를 할당할 수 없습니다.

그러나 속성은 __construct() 메서드를 사용하여 함수로 초기화할 수 있습니다.

<code class="php">class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}</code>

이는 __construct() 메서드가 런타임에 호출되어 다음을 포함한 동적 값 할당을 허용하기 때문에 가능합니다. 기능을 제공합니다.

위 내용은 선언 시 PHP 클래스 속성을 함수로 초기화할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.