stdClass クラスは PHP の内部予約クラスです。最初は、すべての マジック メソッド が 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 中国語 Web サイトの他の関連記事を参照してください。