Heim  >  Artikel  >  php教程  >  Erfahren Sie mehr über die stdClass-Klasse aus dem PHP-Quellcode

Erfahren Sie mehr über die stdClass-Klasse aus dem PHP-Quellcode

高洛峰
高洛峰Original
2016-12-21 14:19:471147Durchsuche

In der Baidu-Enzyklopädie lautet die Definition von stdClass wie folgt:

stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。stdClass是PHP的一个基类,
所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,
这个基类又有一个特殊的地方,就是没有方法。凡是用new stdClass()的变量,
都不可能会出现$a->test()这种方式的使用。PHP5的对象的独特性,对象在任何地方被调用,
都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。

Die meisten der oben genannten Definitionen sind korrekt, es liegt jedoch ein schwerwiegender Diagnosefehler vor: stdClass ist fast eine Basisklasse von PHP Alle Klassen erben diese Klasse. Schauen Sie sich ein einfaches Beispiel an:

class EmptyClass {
}
$object = new EmptyClass();
if ($object instanceof stdClass) {
    echo 'yes';
}else{
    echo 'no';
}

führt den Code aus und gibt „nein“ aus. Dieses Beispiel veranschaulicht vollständig, dass die Klasse stdClass nicht die Basisklasse aller Klassen ist. Es handelt sich lediglich um eine reservierte Klasse von PHP oder eine ähnliche Rolle wie die Funktion strlen. Schauen wir uns die Implementierung der stdClass-Klasse aus der Quellcode-Perspektive an. Ihr Registrierungsort befindet sich in der Datei Zend/zend_buildin_functions.c. Wie folgt:

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;
}
/* }}} */

Um es zusammenzufassen:

Die stdClass-Klasse ist eine interne reservierte Klasse von PHP. Sie hat zunächst keine Mitgliedsvariablen und keine Mitgliedsmethoden . Sie können damit variable Argumente übergeben, es gibt jedoch keine Methoden, die Sie aufrufen können. Die Klasse stdClass kann vererbt werden, aber es macht wenig Sinn, dies zu tun.

Für ein tieferes Verständnis der stdClass-Klasse aus dem PHP-Quellcode beachten Sie bitte die chinesische PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn