php stdClassの内部予約クラスの使用例を詳しく解説

伊谢尔伦
リリース: 2023-03-12 07:18:02
オリジナル
1097 人が閲覧しました

stdClass クラスは PHP の内部予約クラスです。最初は、すべての マジック メソッド が NULL に設定されており、変数パラメーターを渡すために使用できますが、メソッドはありません。それは呼び出すことができます。 stdClass クラスは継承できますが、継承する意味はほとんどありません。 このクラスは PHP の予約クラスであり、すべてのクラスの基本クラスではありません。

<?php 
class foo {} 
$bar = new foo(); 
echo $bar instanceof stdClass?&#39;yes&#39;:&#39;no&#39;; 
//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, &#39;stdClass&#39;)); // false 
echo get_class($t) . "\n"; // &#39;CTest&#39; 
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 &#39;yes&#39;; 
}else{ 
echo &#39;no&#39;; 
}
ログイン後にコピー


コードを実行すると、「no」が出力されます。この例は、stdClass クラスがすべてのクラスの基本クラスではないことを十分に示しています。これは単なる PHP の予約クラス、または strlen 関数に似た役割です。 ソース コードの観点から stdClass クラスの実装を見てみましょう。その登録場所は Zend/zend_buildin_functions.c ファイルです。以下の通り:
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; 
} 
/* }}} */
ログイン後にコピー
これは zend_builtin_module のモジュール初期化関数です。この関数は、PHP カーネルがモジュール初期化操作を実行するときに自動的にロードされ、stdClass クラスの登録操作も実行されます。このコードからわかるように、stdClass クラスはメンバー変数もメンバー メソッドも持たないクラスです。 すべてのマジック メソッド、親クラス、インターフェイスなどは、初期化中に NULL に設定されます。 PHP ではメソッドをクラスに動的に追加できないため、このクラスは動的属性を処理するためにのみ使用できますが、これも一般的な使用法です。


要約すると、

stdClass は PHP の内部予約クラスであり、最初はすべてのマジック メソッドを NULL に設定できますが、それを実行できるメソッドはありません。呼ばれる。 stdClass クラスは継承できますが、継承する意味はほとんどありません。

以上がphp stdClassの内部予約クラスの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート