3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace App\Localization; enum Locale { case ru; case en; public static function tryFromName(string $name): ?self { $constant = self::class.'::'.$name; if (\defined($constant)) { return \constant($constant); } return null; } public static function fromName(string $name): self { return self::tryFromName($name) ?? throw new \ValueError(sprintf( '"%s" is not a valid name for enum "%s"', $name, self::class, )); } } var_dump(Locale::tryFromName('ru')); var_dump(Locale::tryFromName('fr')); var_dump(Locale::fromName('en')); var_dump(Locale::fromName('es'));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/EgBB1
function name:  (null)
number of ops:  26
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   DECLARE_CLASS                                            'app%5Clocalization%5Clocale'
   32     1        INIT_NS_FCALL_BY_NAME                                    'App%5CLocalization%5Cvar_dump'
          2        INIT_STATIC_METHOD_CALL                                  'App%5CLocalization%5CLocale', 'tryFromName'
          3        SEND_VAL_EX                                              'ru'
          4        DO_FCALL                                      0  $0      
          5        SEND_VAR_NO_REF_EX                                       $0
          6        DO_FCALL                                      0          
   33     7        INIT_NS_FCALL_BY_NAME                                    'App%5CLocalization%5Cvar_dump'
          8        INIT_STATIC_METHOD_CALL                                  'App%5CLocalization%5CLocale', 'tryFromName'
          9        SEND_VAL_EX                                              'fr'
         10        DO_FCALL                                      0  $2      
         11        SEND_VAR_NO_REF_EX                                       $2
         12        DO_FCALL                                      0          
   34    13        INIT_NS_FCALL_BY_NAME                                    'App%5CLocalization%5Cvar_dump'
         14        INIT_STATIC_METHOD_CALL                                  'App%5CLocalization%5CLocale', 'fromName'
         15        SEND_VAL_EX                                              'en'
         16        DO_FCALL                                      0  $4      
         17        SEND_VAR_NO_REF_EX                                       $4
         18        DO_FCALL                                      0          
   35    19        INIT_NS_FCALL_BY_NAME                                    'App%5CLocalization%5Cvar_dump'
         20        INIT_STATIC_METHOD_CALL                                  'App%5CLocalization%5CLocale', 'fromName'
         21        SEND_VAL_EX                                              'es'
         22        DO_FCALL                                      0  $6      
         23        SEND_VAR_NO_REF_EX                                       $6
         24        DO_FCALL                                      0          
         25      > RETURN                                                   1

Class App\Localization\Locale:
Function tryfromname:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 12
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/EgBB1
function name:  tryFromName
number of ops:  15
compiled vars:  !0 = $name, !1 = $constant
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   10     0  E >   RECV                                             !0      
   12     1        CONCAT                                           ~2      'App%5CLocalization%5CLocale%3A%3A', !0
          2        ASSIGN                                                   !1, ~2
   14     3        INIT_FCALL                                               'defined'
          4        SEND_VAR                                                 !1
          5        DO_ICALL                                         $4      
          6      > JMPZ                                                     $4, ->12
   15     7    >   INIT_FCALL                                               'constant'
          8        SEND_VAR                                                 !1
          9        DO_ICALL                                         $5      
         10        VERIFY_RETURN_TYPE                                       $5
         11      > RETURN                                                   $5
   18    12    > > RETURN                                                   null
   19    13*       VERIFY_RETURN_TYPE                                       
         14*     > RETURN                                                   null

End of function tryfromname

Function fromname:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 108) Position 1 = -2
filename:       /in/EgBB1
function name:  fromName
number of ops:  19
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   RECV                                             !0      
   23     1        INIT_STATIC_METHOD_CALL                                  'tryFromName'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $1      
          4        COALESCE                                         ~2      $1
   24     5        NEW                                              $3      'ValueError'
          6        INIT_NS_FCALL_BY_NAME                                    'App%5CLocalization%5Csprintf'
   25     7        SEND_VAL_EX                                              '%22%25s%22+is+not+a+valid+name+for+enum+%22%25s%22'
          8        SEND_VAR_EX                                              !0
   27     9        SEND_VAL_EX                                              'App%5CLocalization%5CLocale'
   24    10        DO_FCALL                                      0  $4      
   27    11        SEND_VAR_NO_REF_EX                                       $4
   24    12        DO_FCALL                                      0          
   27    13      > THROW                                         1          $3
         14*       QM_ASSIGN                                        ~2      <true>
         15*       VERIFY_RETURN_TYPE                                       ~2
         16*       RETURN                                                   ~2
   29    17*       VERIFY_RETURN_TYPE                                       
         18*     > RETURN                                                   null

End of function fromname

End of class App\Localization\Locale.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
138.85 ms | 1006 KiB | 17 Q