PHP의 연산자 오버로딩
PHP 애호가들은 특히 배열 기능과 관련하여 연산자 오버로딩의 타당성에 대해 궁금해하는 경우가 많습니다. 특히 사용자 정의 배열 클래스에 대해 [] 연산자를 오버로드하려는 경우가 많습니다.
[] 연산자 오버로드가 가능합니까?
기존 연산자 오버로드는 직접적으로 수행되지는 않습니다. PHP에서 지원되는 PHP5에는 실행 가능한 해결 방법을 제공하는 SPL ArrayObject 클래스가 도입되었습니다.
오버로딩을 위해 ArrayObject 사용
ArrayObject 클래스를 확장하면 " 사용자 정의된 연산자 동작이 포함된 가짜" 배열입니다. 간단한 예는 다음과 같습니다.
<code class="php">class MyArray extends ArrayObject { public function offsetSet($i, $v) { echo 'Appending ' . $v; parent::offsetSet($i, $v); } } $a = new MyArray; $a[] = 1;</code>
출력:
Appending 1
이 확장된 ArrayObject를 사용하면 offsetSet 메서드를 사용자 정의하여 추가 작업을 수행할 수 있습니다. 배열 요소에 값을 할당할 때.
추가 참고:
ArrayObject가 솔루션을 제공하지만 이것이 진정한 연산자 오버로드 메커니즘이 아니라는 점에 유의하는 것이 중요합니다. 이는 여전히 offsetSet 메소드의 사전 정의된 의미를 준수합니다.
위 내용은 사용자 정의 배열 클래스를 위해 PHP에서 [] 연산자를 오버로드할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!