10

オブジェクトをvar_dump作成すると、出力は次のようになります。

object(XCTemplate)#2477 (4) {
  ["id"]=>
  string(1) "1"
  ["attributes"]=>
  array(0) {
  }
  ["db_table_name"]=>
  string(14) "template_names"
  ["cache"]=>
  array(0) {
  }
}

XCTemplateもちろん、そのクラスはですが、#の後の整数(ここでは2477)はどういう意味ですか?

4

1 に答える 1

8

の特定のインスタンスに関連付けられた一意の ID ですXCTemplate。私の知る限り、これは文書化されておらず、取得する方法もありません(を使用する以外var_dump())。そして私はReflectionクラスを見てきました。

私が見たものから:

  • ID はインスタンスごとに一意です。1 から始まり、新しいオブジェクトごとに 1 ずつ増加します。これにはすべてのオブジェクトが含まれます。同じクラスである必要はありません。
  • インスタンスを破棄すると (例: を介してunset)、その ID が解放され、次にインスタンス化されたオブジェクトがそれを使用できます (使用する予定です)。
  • 変数とは関係ありません。例えば:

    $foo = new Foo();
    var_dump($foo);
    $foo = new Foo();
    var_dump($foo);
    

    インスタンス化ごとに異なる ID を生成します。

  • これは、単にint変換して ID を取得できるリソース ID とは異なります。

    $resource= curl_init();      
    var_dump($resource);       // resource #1 of type curl
    print(intval($resource));  // 1
    print((int) $resource);    // 1
    
于 2010-09-21T17:22:36.397 に答える