3v4l.org

run code in 300+ PHP versions simultaneously
<?php // --- 1. シンプルな独自定義クラス --- class MySimpleClass { public string $publicProp; private int $privateProp; // privateプロパティもシリアライズされる protected array $protectedProp; public ?MySimpleClass $parent = null; // 自己参照または他のオブジェクト参照用 public array $nestedArrayData; public string $sharedStringRef1; public string $sharedStringRef2; public object $sharedObjectRef1; public object $sharedObjectRef2; public object $customSerializableObj; public object $userRoleEnum; // Backed Enum public object $statusEnum; // Pure Enum public $nullValue; public bool $booleanTrue; public float $floatValue; public int $integerValue; public string $japaneseString; public function __construct(string $public, int $private, array $protected) { $this->publicProp = $public; $this->privateProp = $private; $this->protectedProp = $protected; $this->nestedArrayData = []; // 初期化 } public function getPrivateProp(): int { return $this->privateProp; } } // --- 2. カスタムシリアライズ可能なクラス (PHP 7.4+ の __serialize/__unserialize) --- class MyCustomSerializable { public string $dataString; private int $dataNumber; public function __construct(string $s, int $n) { $this->dataString = $s; $this->dataNumber = $n; } // オブジェクトがシリアライズされる直前に呼び出される // シリアライズしたいプロパティを連想配列で返す public function __serialize(): array { echo "__serialize() called for MyCustomSerializable\n"; return [ 's' => $this->dataString, 'n' => $this->dataNumber, ]; } // オブジェクトがデシリアライズされた直後に呼び出される // __serialize() で返された連想配列を受け取る public function __unserialize(array $data): void { echo "__unserialize() called for MyCustomSerializable\n"; $this->dataString = $data['s']; $this->dataNumber = $data['n']; } public function getCustomData(): string { return "Custom: " . $this->dataString . " / " . $this->dataNumber; } } // --- 3. Enum の定義 (PHP 8.1+) --- enum UserRole: string // Backed Enum { case Admin = 'admin'; case Editor = 'editor'; case Viewer = 'viewer'; } enum Status // Pure Enum { case Active; case Inactive; } // --- シリアライズ対象データ構造の構築 (トップレベルがオブジェクト) --- // オブジェクト参照と値参照のための共通データ $commonObject = new MySimpleClass('共通オブジェクト', 500, ['shared' => true]); $commonString = "共有される文字列データ"; // トップレベルのオブジェクトを作成し、多様なデータをプロパティとして持つ $topLevelObject = new MySimpleClass('Top Level Object', 999, ['root_data' => 'initial']); // 1. スカラー型 (Scalar Types) $topLevelObject->japaneseString = "これは日本語の文字列です"; $topLevelObject->integerValue = 123; $topLevelObject->floatValue = 45.67; $topLevelObject->booleanTrue = true; $topLevelObject->nullValue = null; // 2. リスト (数値キーの配列) $topLevelObject->nestedArrayData = [ 'Item A', 'Item B', 'Item C', 10, false, ]; // 3. 連想配列 (Associative Array) $topLevelObject->protectedProp = [ // protectedProp を再利用して連想配列を入れる 'assoc_key1' => 'assoc_value1', 'assoc_key2' => 789, 'deep_nested_array' => [ 'sub_key_x' => 'sub_value_x', 'sub_key_y' => 12.34, ], ]; // 4. オブジェクト参照 (r:) - 別のオブジェクトへの参照 $topLevelObject->sharedObjectRef1 = $commonObject; $topLevelObject->sharedObjectRef2 = $commonObject; // 同じオブジェクトへの参照 // 5. 値参照 (R:) - 同じ文字列への参照 $topLevelObject->sharedStringRef1 = $commonString; $topLevelObject->sharedStringRef2 = $commonString; // 同じ文字列への参照 // 6. Enum (PHP 8.1+ の場合) $topLevelObject->userRoleEnum = UserRole::Editor; $topLevelObject->statusEnum = Status::Active; // 7. カスタムシリアライズ可能なオブジェクト (C:) $topLevelObject->customSerializableObj = new MyCustomSerializable('オブジェクト内のカスタム', 777); // --- シリアライズ実行 --- $serializedResult = serialize($topLevelObject); // --- 出力 --- echo "--- 元データ (var_export) ---\n"; var_export($topLevelObject); echo "\n\n"; echo "--- シリアライズ結果 ---\n"; echo $serializedResult; echo "\n\n"; // --- デシリアライズの確認 (オプション) --- // このスクリプト内でデシリアライズすることで、__unserialize() が呼び出されることを確認できます。 echo "--- デシリアライズ処理の開始 ---\n"; $unserializedData = unserialize($serializedResult); echo "--- デシerializ処理の完了 ---\n\n"; echo "--- デシリアライズ結果 (var_export) ---\n"; var_export($unserializedData); echo "\n"; // デシリアライズされたオブジェクトへのアクセス例と参照確認 if ($unserializedData instanceof MySimpleClass) { echo "トップレベルのオブジェクトの publicProp: " . $unserializedData->publicProp . "\n"; echo "トップレベルのオブジェクトのプライベートプロパティ: " . $unserializedData->getPrivateProp() . "\n"; if (isset($unserializedData->customSerializableObj) && $unserializedData->customSerializableObj instanceof MyCustomSerializable) { echo "オブジェクト内のカスタムシリアライズオブジェクトのデータ: " . $unserializedData->customSerializableObj->getCustomData() . "\n"; } if ($unserializedData->sharedObjectRef1 === $unserializedData->sharedObjectRef2) { echo "オブジェクト参照 (sharedObjectRef1 と sharedObjectRef2) は正しく復元されました。\n"; } if ($unserializedData->sharedStringRef1 === $unserializedData->sharedStringRef2) { echo "値参照 (sharedStringRef1 と sharedStringRef2) は正しく復元されました。\n"; } if (isset($unserializedData->userRoleEnum) && $unserializedData->userRoleEnum instanceof UserRole) { echo "Enum (UserRole): " . $unserializedData->userRoleEnum->value . "\n"; } if (isset($unserializedData->statusEnum) && $unserializedData->statusEnum instanceof Status) { echo "Enum (Status): " . $unserializedData->statusEnum->name . "\n"; } } else { echo "デシリアライズされたデータは期待されるオブジェクトではありませんでした。\n"; var_dump($unserializedData); } ?>
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 74, Position 2 = 128
Branch analysis from position: 74
2 jumps found. (Code = 46) Position 1 = 85, Position 2 = 88
Branch analysis from position: 85
2 jumps found. (Code = 43) Position 1 = 89, Position 2 = 95
Branch analysis from position: 89
2 jumps found. (Code = 43) Position 1 = 99, Position 2 = 100
Branch analysis from position: 99
2 jumps found. (Code = 43) Position 1 = 104, Position 2 = 105
Branch analysis from position: 104
2 jumps found. (Code = 46) Position 1 = 107, Position 2 = 110
Branch analysis from position: 107
2 jumps found. (Code = 43) Position 1 = 111, Position 2 = 116
Branch analysis from position: 111
2 jumps found. (Code = 46) Position 1 = 118, Position 2 = 121
Branch analysis from position: 118
2 jumps found. (Code = 43) Position 1 = 122, Position 2 = 127
Branch analysis from position: 122
1 jumps found. (Code = 42) Position 1 = 132
Branch analysis from position: 132
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 127
Branch analysis from position: 121
Branch analysis from position: 116
Branch analysis from position: 110
Branch analysis from position: 105
Branch analysis from position: 100
Branch analysis from position: 95
Branch analysis from position: 88
Branch analysis from position: 128
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  (null)
number of ops:  133
compiled vars:  !0 = $commonObject, !1 = $commonString, !2 = $topLevelObject, !3 = $serializedResult, !4 = $unserializedData
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   77     0  E >   DECLARE_CLASS                                            'userrole'
   84     1        DECLARE_CLASS                                            'status'
   93     2        NEW                                              $5      'MySimpleClass'
          3        SEND_VAL_EX                                              '%E5%85%B1%E9%80%9A%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88'
          4        SEND_VAL_EX                                              500
          5        SEND_VAL_EX                                              <array>
          6        DO_FCALL                                      0          
          7        ASSIGN                                                   !0, $5
   94     8        ASSIGN                                                   !1, '%E5%85%B1%E6%9C%89%E3%81%95%E3%82%8C%E3%82%8B%E6%96%87%E5%AD%97%E5%88%97%E3%83%87%E3%83%BC%E3%82%BF'
   97     9        NEW                                              $9      'MySimpleClass'
         10        SEND_VAL_EX                                              'Top+Level+Object'
         11        SEND_VAL_EX                                              999
         12        SEND_VAL_EX                                              <array>
         13        DO_FCALL                                      0          
         14        ASSIGN                                                   !2, $9
  100    15        ASSIGN_OBJ                                               !2, 'japaneseString'
         16        OP_DATA                                                  '%E3%81%93%E3%82%8C%E3%81%AF%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%81%A7%E3%81%99'
  101    17        ASSIGN_OBJ                                               !2, 'integerValue'
         18        OP_DATA                                                  123
  102    19        ASSIGN_OBJ                                               !2, 'floatValue'
         20        OP_DATA                                                  45.67
  103    21        ASSIGN_OBJ                                               !2, 'booleanTrue'
         22        OP_DATA                                                  <true>
  104    23        ASSIGN_OBJ                                               !2, 'nullValue'
         24        OP_DATA                                                  null
  107    25        ASSIGN_OBJ                                               !2, 'nestedArrayData'
  108    26        OP_DATA                                                  <array>
  116    27        ASSIGN_OBJ                                               !2, 'protectedProp'
  117    28        OP_DATA                                                  <array>
  126    29        ASSIGN_OBJ                                               !2, 'sharedObjectRef1'
         30        OP_DATA                                                  !0
  127    31        ASSIGN_OBJ                                               !2, 'sharedObjectRef2'
         32        OP_DATA                                                  !0
  130    33        ASSIGN_OBJ                                               !2, 'sharedStringRef1'
         34        OP_DATA                                                  !1
  131    35        ASSIGN_OBJ                                               !2, 'sharedStringRef2'
         36        OP_DATA                                                  !1
  134    37        FETCH_CLASS_CONSTANT                             ~24     'UserRole', 'Editor'
         38        ASSIGN_OBJ                                               !2, 'userRoleEnum'
         39        OP_DATA                                                  ~24
  135    40        FETCH_CLASS_CONSTANT                             ~26     'Status', 'Active'
         41        ASSIGN_OBJ                                               !2, 'statusEnum'
         42        OP_DATA                                                  ~26
  138    43        NEW                                              $28     'MyCustomSerializable'
         44        SEND_VAL_EX                                              '%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E5%86%85%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0'
         45        SEND_VAL_EX                                              777
         46        DO_FCALL                                      0          
         47        ASSIGN_OBJ                                               !2, 'customSerializableObj'
         48        OP_DATA                                                  $28
  142    49        INIT_FCALL                                               'serialize'
         50        SEND_VAR                                                 !2
         51        DO_ICALL                                         $30     
         52        ASSIGN                                                   !3, $30
  145    53        ECHO                                                     '---+%E5%85%83%E3%83%87%E3%83%BC%E3%82%BF+%28var_export%29+---%0A'
  146    54        INIT_FCALL                                               'var_export'
         55        SEND_VAR                                                 !2
         56        DO_ICALL                                                 
  147    57        ECHO                                                     '%0A%0A'
  149    58        ECHO                                                     '---+%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E7%B5%90%E6%9E%9C+---%0A'
  150    59        ECHO                                                     !3
  151    60        ECHO                                                     '%0A%0A'
  155    61        ECHO                                                     '---+%E3%83%87%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E5%87%A6%E7%90%86%E3%81%AE%E9%96%8B%E5%A7%8B+---%0A'
  156    62        INIT_FCALL                                               'unserialize'
         63        SEND_VAR                                                 !3
         64        DO_ICALL                                         $33     
         65        ASSIGN                                                   !4, $33
  157    66        ECHO                                                     '---+%E3%83%87%E3%82%B7erializ%E5%87%A6%E7%90%86%E3%81%AE%E5%AE%8C%E4%BA%86+---%0A%0A'
  159    67        ECHO                                                     '---+%E3%83%87%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E7%B5%90%E6%9E%9C+%28var_export%29+---%0A'
  160    68        INIT_FCALL                                               'var_export'
         69        SEND_VAR                                                 !4
         70        DO_ICALL                                                 
  161    71        ECHO                                                     '%0A'
  164    72        INSTANCEOF                                               !4, 'MySimpleClass'
         73      > JMPZ                                                     ~36, ->128
  165    74    >   FETCH_OBJ_R                                      ~37     !4, 'publicProp'
         75        CONCAT                                           ~38     '%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AE%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE+publicProp%3A+', ~37
         76        CONCAT                                           ~39     ~38, '%0A'
         77        ECHO                                                     ~39
  166    78        INIT_METHOD_CALL                                         !4, 'getPrivateProp'
         79        DO_FCALL                                      0  $40     
         80        CONCAT                                           ~41     '%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AE%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%3A+', $40
         81        CONCAT                                           ~42     ~41, '%0A'
         82        ECHO                                                     ~42
  168    83        ISSET_ISEMPTY_PROP_OBJ                           ~43     !4, 'customSerializableObj'
         84      > JMPZ_EX                                          ~43     ~43, ->88
         85    >   FETCH_OBJ_R                                      ~44     !4, 'customSerializableObj'
         86        INSTANCEOF                                       ~45     ~44, 'MyCustomSerializable'
         87        BOOL                                             ~43     ~45
         88    > > JMPZ                                                     ~43, ->95
  169    89    >   FETCH_OBJ_R                                      ~46     !4, 'customSerializableObj'
         90        INIT_METHOD_CALL                                         ~46, 'getCustomData'
         91        DO_FCALL                                      0  $47     
         92        CONCAT                                           ~48     '%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E5%86%85%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%3A+', $47
         93        CONCAT                                           ~49     ~48, '%0A'
         94        ECHO                                                     ~49
  172    95    >   FETCH_OBJ_R                                      ~50     !4, 'sharedObjectRef1'
         96        FETCH_OBJ_R                                      ~51     !4, 'sharedObjectRef2'
         97        IS_IDENTICAL                                             ~50, ~51
         98      > JMPZ                                                     ~52, ->100
  173    99    >   ECHO                                                     '%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E5%8F%82%E7%85%A7+%28sharedObjectRef1+%E3%81%A8+sharedObjectRef2%29+%E3%81%AF%E6%AD%A3%E3%81%97%E3%81%8F%E5%BE%A9%E5%85%83%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%0A'
  175   100    >   FETCH_OBJ_R                                      ~53     !4, 'sharedStringRef1'
        101        FETCH_OBJ_R                                      ~54     !4, 'sharedStringRef2'
        102        IS_IDENTICAL                                             ~53, ~54
        103      > JMPZ                                                     ~55, ->105
  176   104    >   ECHO                                                     '%E5%80%A4%E5%8F%82%E7%85%A7+%28sharedStringRef1+%E3%81%A8+sharedStringRef2%29+%E3%81%AF%E6%AD%A3%E3%81%97%E3%81%8F%E5%BE%A9%E5%85%83%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%0A'
  178   105    >   ISSET_ISEMPTY_PROP_OBJ                           ~56     !4, 'userRoleEnum'
        106      > JMPZ_EX                                          ~56     ~56, ->110
        107    >   FETCH_OBJ_R                                      ~57     !4, 'userRoleEnum'
        108        INSTANCEOF                                       ~58     ~57, 'UserRole'
        109        BOOL                                             ~56     ~58
        110    > > JMPZ                                                     ~56, ->116
  179   111    >   FETCH_OBJ_R                                      ~59     !4, 'userRoleEnum'
        112        FETCH_OBJ_R                                      ~60     ~59, 'value'
        113        CONCAT                                           ~61     'Enum+%28UserRole%29%3A+', ~60
        114        CONCAT                                           ~62     ~61, '%0A'
        115        ECHO                                                     ~62
  181   116    >   ISSET_ISEMPTY_PROP_OBJ                           ~63     !4, 'statusEnum'
        117      > JMPZ_EX                                          ~63     ~63, ->121
        118    >   FETCH_OBJ_R                                      ~64     !4, 'statusEnum'
        119        INSTANCEOF                                       ~65     ~64, 'Status'
        120        BOOL                                             ~63     ~65
        121    > > JMPZ                                                     ~63, ->127
  182   122    >   FETCH_OBJ_R                                      ~66     !4, 'statusEnum'
        123        FETCH_OBJ_R                                      ~67     ~66, 'name'
        124        CONCAT                                           ~68     'Enum+%28Status%29%3A+', ~67
        125        CONCAT                                           ~69     ~68, '%0A'
        126        ECHO                                                     ~69
  164   127    > > JMP                                                      ->132
  185   128    >   ECHO                                                     '%E3%83%87%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%82%BA%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AF%E6%9C%9F%E5%BE%85%E3%81%95%E3%82%8C%E3%82%8B%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%0A'
  186   129        INIT_FCALL                                               'var_dump'
        130        SEND_VAR                                                 !4
        131        DO_ICALL                                                 
  189   132    > > RETURN                                                   1

Class MySimpleClass:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  __construct
number of ops:  12
compiled vars:  !0 = $public, !1 = $private, !2 = $protected
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   24     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV                                             !2      
   26     3        ASSIGN_OBJ                                               'publicProp'
          4        OP_DATA                                                  !0
   27     5        ASSIGN_OBJ                                               'privateProp'
          6        OP_DATA                                                  !1
   28     7        ASSIGN_OBJ                                               'protectedProp'
          8        OP_DATA                                                  !2
   29     9        ASSIGN_OBJ                                               'nestedArrayData'
         10        OP_DATA                                                  <array>
   30    11      > RETURN                                                   null

End of function __construct

Function getprivateprop:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  getPrivateProp
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   34     0  E >   FETCH_OBJ_R                                      ~0      'privateProp'
          1        VERIFY_RETURN_TYPE                                       ~0
          2      > RETURN                                                   ~0
   35     3*       VERIFY_RETURN_TYPE                                       
          4*     > RETURN                                                   null

End of function getprivateprop

End of class MySimpleClass.

Class MyCustomSerializable:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  __construct
number of ops:  7
compiled vars:  !0 = $s, !1 = $n
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   44     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   46     2        ASSIGN_OBJ                                               'dataString'
          3        OP_DATA                                                  !0
   47     4        ASSIGN_OBJ                                               'dataNumber'
          5        OP_DATA                                                  !1
   48     6      > RETURN                                                   null

End of function __construct

Function __serialize:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  __serialize
number of ops:  9
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   54     0  E >   ECHO                                                     '__serialize%28%29+called+for+MyCustomSerializable%0A'
   56     1        FETCH_OBJ_R                                      ~0      'dataString'
          2        INIT_ARRAY                                       ~1      ~0, 's'
   57     3        FETCH_OBJ_R                                      ~2      'dataNumber'
          4        ADD_ARRAY_ELEMENT                                ~1      ~2, 'n'
          5        VERIFY_RETURN_TYPE                                       ~1
          6      > RETURN                                                   ~1
   59     7*       VERIFY_RETURN_TYPE                                       
          8*     > RETURN                                                   null

End of function __serialize

Function __unserialize:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  __unserialize
number of ops:  9
compiled vars:  !0 = $data
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   63     0  E >   RECV                                             !0      
   65     1        ECHO                                                     '__unserialize%28%29+called+for+MyCustomSerializable%0A'
   66     2        FETCH_DIM_R                                      ~2      !0, 's'
          3        ASSIGN_OBJ                                               'dataString'
          4        OP_DATA                                                  ~2
   67     5        FETCH_DIM_R                                      ~4      !0, 'n'
          6        ASSIGN_OBJ                                               'dataNumber'
          7        OP_DATA                                                  ~4
   68     8      > RETURN                                                   null

End of function __unserialize

Function getcustomdata:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GibVI
function name:  getCustomData
number of ops:  9
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   72     0  E >   FETCH_OBJ_R                                      ~0      'dataString'
          1        CONCAT                                           ~1      'Custom%3A+', ~0
          2        CONCAT                                           ~2      ~1, '+%2F+'
          3        FETCH_OBJ_R                                      ~3      'dataNumber'
          4        CONCAT                                           ~4      ~2, ~3
          5        VERIFY_RETURN_TYPE                                       ~4
          6      > RETURN                                                   ~4
   73     7*       VERIFY_RETURN_TYPE                                       
          8*     > RETURN                                                   null

End of function getcustomdata

End of class MyCustomSerializable.

Class UserRole: [no user functions]
Class Status: [no user functions]

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
149.55 ms | 1034 KiB | 17 Q