저와 같은 모든 사람들은 다음과 유사한 PHP 코드를 자주 보게 될 것이라고 믿습니다.
$user = new stdClass(); $user->name = 'gouki';
이런 코드는 어디에 사용되나요?
매뉴얼을 열어서 stdClass를 검색하시면 매뉴얼에 소개가 거의 없는 것을 다시 구글에서 검색하시면 거의 모든 영어 설명이 나옵니다.
사실 stdClass는 PHP5에서만 인기를 얻었습니다. 그리고 stdClass는 zend의 예약 클래스이기도 합니다. 다른 효과는 없는 것 같습니다. 설명도 거의 없습니다.
또는 다음과 같이 이해할 수 있습니다. stdClass는 PHP의 기본 클래스입니다. 거의 모든 클래스가 이 클래스를 상속하므로 언제든지 새 클래스일 수 있으며 이 변수는 객체가 될 수 있습니다. 동시에 이 기본 클래스에는 특별한 기능이 있습니다. 즉, 메서드가 없습니다.
new stdClass() 변수를 사용할 때마다 $a->test()를 사용할 수 없습니다.
또는 PHP5 개체의 고유성으로 인해 개체가 호출될 때마다 참조되므로 리소스를 덜 소비합니다. 다른 페이지에서 값을 할당할 때 복사본을 참조하는 대신 직접 수정됩니다.
예:
$user = new stdClass(); $user->name = 'gouki'; $myUser = $user; $myUser->name = 'flypig';
PHP4 시대의 경우 이러한 코드는 시스템 리소스를 소비합니다. 이유:
$myUser = $user;
이렇게 하면 복사본이 생성됩니다. 따라서 PHP4에서는 항상 다음과 같이 사용됩니다.
$myUser = & $user;
어떤 사람들은 왜 배열을 사용하지 않느냐고 말합니다. 배열이 더 편리하지 않나요? 그리고 PHP와 같이 약한 유형의 프로그램의 경우 배열을 사용하는 것이 가장 편리합니다.
그렇습니다. 배열은 프로그램에서 사용하기에 가장 편리해야 합니다. 그러나 배열이 참조될 때마다($a = $b) 실제로 복사본이 생성됩니다. 또한 배열이 설정 해제된 후에도 여전히 메모리를 차지합니다. 들었습니다) 사람들이 그러는데 테스트해본적도 없고... 혹시 테스트하는 방법도 모르겠네요. 아시는 분 알려주시면 감사하겠습니다.)
그런데 에 arrayobject 함수도 있습니다. 배열을 객체로 직접 변환할 수 있는 SPL의 표준 클래스 라이브러리도 좋은 생각입니다.
PHP의 stdClass 클래스 이해와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!