stdClass 클래스는 PHP의 내부 예약 클래스입니다. 처음에는 멤버 변수도 없고 멤버 메서드도 없습니다. 모든 magic 메서드는 NULL로 설정되어 있으며 변수 매개변수를 전달하는 데 사용할 수 있습니다. 라고 할 수 있습니다. stdClass 클래스는 상속될 수 있지만 그렇게 하는 데는 거의 의미가 없습니다.
이 클래스는 PHP의 예약 클래스이며 모든 클래스의 기본 클래스는 아닙니다.
<?php class foo {} $bar = new foo(); echo $bar instanceof stdClass?'yes':'no'; //output:no
또 다른 예:
<?php // CTest does not derive from stdClass class CTest { public $property1; } $t = new CTest; var_dump($t instanceof stdClass); // false var_dump(is_subclass_of($t, 'stdClass')); // false echo get_class($t) . "\n"; // 'CTest' echo get_parent_class($t) . "\n"; // false (no parent) ?>
모든 캐스트를 사용하여 (object)은 stdClass의 인스턴스를 가져옵니다.
PHP의 stdClass 클래스 이해하기
stdClass는 PHP5에서만 인기를 얻었습니다. 그리고 stdClass는 zend의 예약 클래스이기도 합니다. stdClass는 PHP의 기본 클래스입니다.
거의 모든 클래스가 이 클래스를 상속하므로 언제든지 새 클래스가 될 수 있고 이 변수는 객체가 될 수 있습니다. 동시에
이 기본 클래스에는 또 다른 특별한 기능이 있습니다. 즉, 메서드가 없습니다. new stdClass()를 사용하는 모든 변수는 $a->test() 방식으로 사용되지 않습니다. PHP5의
object의 특징은 객체가 어디에서나 호출될 때 참조 주소 유형이므로 리소스를 덜 소모한다는 것입니다. 다른 페이지에서 값을 할당할 때 복사본을 참조하는 대신 직접 수정됩니다.
위 정의는 대부분 정확하지만 치명적인 진단 오류가 있습니다. stdClass는 PHP의 기본 클래스이며 거의 모든 클래스가 이 클래스를 상속합니다. 간단한 예를 보세요:
class EmptyClass { } $object = new EmptyClass(); if ($object instanceof stdClass) { echo 'yes'; }else{ echo 'no'; }
ZEND_MINIT_FUNCTION(core) { /* {{{ */ zend_class_entry class_entry; /* 注册stdClass 类 */ INIT_CLASS_ENTRY(class_entry, "stdClass", NULL); zend_standard_class_def = zend_register_internal_class(&class_entry TSRMLS_CC); /* 注册默认类,接口,如Exception类,SPL中的一些类等 */ zend_register_default_classes(TSRMLS_C); return SUCCESS; } /* }}} */
위 내용은 PHP stdClass의 내부 예약 클래스 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!