Maison  >  Article  >  php教程  >  En savoir plus sur la classe stdClass à partir du code source PHP

En savoir plus sur la classe stdClass à partir du code source PHP

高洛峰
高洛峰original
2016-12-21 14:19:471180parcourir

Dans l'Encyclopédie Baidu, la définition de stdClass est la suivante :

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

La plupart des définitions ci-dessus sont correctes, mais il y a une erreur de diagnostic fatale : stdClass est une classe de base de PHP, toutes presque toutes les classes héritent de cette classe. Regardez un exemple simple :

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

exécute le code et renvoie "no". Cet exemple illustre pleinement que la classe stdClass n'est pas la classe de base de toutes les classes. C'est juste une classe réservée de PHP, ou un rôle similaire à la fonction strlen. Regardons l'implémentation de la classe stdClass du point de vue du code source. Son emplacement d'enregistrement est dans le fichier Zend/zend_buildin_functions.c. Comme suit :

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

Pour résumer :

La classe stdClass est une classe réservée interne de PHP. Initialement, elle n'a aucune variable membre et aucune méthode membre n'est définie sur NULL. . Vous pouvez l'utiliser pour transmettre des arguments variables, mais vous ne pouvez appeler aucune méthode. La classe stdClass peut être héritée, mais cela n'a aucun sens.

Pour une compréhension plus approfondie de la classe stdClass à partir du code source PHP, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn