3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* Класс-маршрутизатор для определения запрашиваемой страницы. > цепляет классы контроллеров и моделей; > создает экземпляры контролеров страниц и вызывает действия этих контроллеров. */ class Route { static function start() { // контроллер и действие по умолчанию $controller_name = 'Main'; $action_name = 'index'; // получаем имя контроллера if (!empty($_GET['cmd'])) { $controller_name = @$_GET['cmd']; } // получаем имя экшена if (!empty($_GET['action']) ) { $action_name = @$_GET['action']; } // добавляем префиксы $model_name = 'Model_'.$controller_name; $controller_name = 'Controller_'.$controller_name; $action_name = 'action_'.$action_name; /* echo "Model: $model_name <br>"; echo "Controller: $controller_name <br>"; echo "Action: $action_name <br>"; */ // подцепляем файл с классом модели (файла модели может и не быть) $model_file = strtolower($model_name).'.php'; $model_path = "application/models/".$model_file; if(file_exists($model_path)) { include "application/models/".$model_file; } // подцепляем файл с классом контроллера $controller_file = strtolower($controller_name).'.php'; $controller_path = "application/controllers/".$controller_file; if(file_exists($controller_path)) { include "application/controllers/".$controller_file; } else { /* правильно было бы кинуть здесь исключение, но для упрощения сразу сделаем редирект на страницу 404 */ Route::ErrorPage404(); $this->ErrorPage404(); } // создаем контроллер $controller = new $controller_name; $action = $action_name; if(method_exists($controller, $action)) { // вызываем действие контроллера $controller->$action(); } else { // здесь также разумнее было бы кинуть исключение Route::ErrorPage404(); } } function ErrorPage404() { $host = 'http://'.$_SERVER['HTTP_HOST'].'/'; header('HTTP/1.1 404 Not Found'); header("Status: 404 Not Found"); header('Location: ./404.html'); } } ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/AA9Rd
function name:  (null)
number of ops:  1
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   92     0  E > > RETURN                                                   1

Class Route:
Function start:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 11
Branch analysis from position: 6
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 20
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 37, Position 2 = 39
Branch analysis from position: 37
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 53
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 58
Branch analysis from position: 58
2 jumps found. (Code = 43) Position 1 = 68, Position 2 = 71
Branch analysis from position: 68
1 jumps found. (Code = 42) Position 1 = 73
Branch analysis from position: 73
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 71
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 68, Position 2 = 71
Branch analysis from position: 68
Branch analysis from position: 71
Branch analysis from position: 39
Branch analysis from position: 20
Branch analysis from position: 11
filename:       /in/AA9Rd
function name:  start
number of ops:  74
compiled vars:  !0 = $controller_name, !1 = $action_name, !2 = $model_name, !3 = $model_file, !4 = $model_path, !5 = $controller_file, !6 = $controller_path, !7 = $controller, !8 = $action
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   14     0  E >   ASSIGN                                                   !0, 'Main'
   15     1        ASSIGN                                                   !1, 'index'
   18     2        FETCH_IS                                         ~11     '_GET'
          3        ISSET_ISEMPTY_DIM_OBJ                         1  ~12     ~11, 'cmd'
          4        BOOL_NOT                                         ~13     ~12
          5      > JMPZ                                                     ~13, ->11
   20     6    >   BEGIN_SILENCE                                    ~14     
          7        FETCH_R                      global              ~15     '_GET'
          8        FETCH_DIM_R                                      ~16     ~15, 'cmd'
          9        END_SILENCE                                              ~14
         10        ASSIGN                                                   !0, ~16
   24    11    >   FETCH_IS                                         ~18     '_GET'
         12        ISSET_ISEMPTY_DIM_OBJ                         1  ~19     ~18, 'action'
         13        BOOL_NOT                                         ~20     ~19
         14      > JMPZ                                                     ~20, ->20
   26    15    >   BEGIN_SILENCE                                    ~21     
         16        FETCH_R                      global              ~22     '_GET'
         17        FETCH_DIM_R                                      ~23     ~22, 'action'
         18        END_SILENCE                                              ~21
         19        ASSIGN                                                   !1, ~23
   30    20    >   CONCAT                                           ~25     'Model_', !0
         21        ASSIGN                                                   !2, ~25
   31    22        CONCAT                                           ~27     'Controller_', !0
         23        ASSIGN                                                   !0, ~27
   32    24        CONCAT                                           ~29     'action_', !1
         25        ASSIGN                                                   !1, ~29
   42    26        INIT_FCALL                                               'strtolower'
         27        SEND_VAR                                                 !2
         28        DO_ICALL                                         $31     
         29        CONCAT                                           ~32     $31, '.php'
         30        ASSIGN                                                   !3, ~32
   43    31        CONCAT                                           ~34     'application%2Fmodels%2F', !3
         32        ASSIGN                                                   !4, ~34
   44    33        INIT_FCALL                                               'file_exists'
         34        SEND_VAR                                                 !4
         35        DO_ICALL                                         $36     
         36      > JMPZ                                                     $36, ->39
   46    37    >   CONCAT                                           ~37     'application%2Fmodels%2F', !3
         38        INCLUDE_OR_EVAL                                          ~37, INCLUDE
   50    39    >   INIT_FCALL                                               'strtolower'
         40        SEND_VAR                                                 !0
         41        DO_ICALL                                         $39     
         42        CONCAT                                           ~40     $39, '.php'
         43        ASSIGN                                                   !5, ~40
   51    44        CONCAT                                           ~42     'application%2Fcontrollers%2F', !5
         45        ASSIGN                                                   !6, ~42
   52    46        INIT_FCALL                                               'file_exists'
         47        SEND_VAR                                                 !6
         48        DO_ICALL                                         $44     
         49      > JMPZ                                                     $44, ->53
   54    50    >   CONCAT                                           ~45     'application%2Fcontrollers%2F', !5
         51        INCLUDE_OR_EVAL                                          ~45, INCLUDE
         52      > JMP                                                      ->58
   62    53    >   INIT_STATIC_METHOD_CALL                                  'Route', 'ErrorPage404'
         54        DO_FCALL                                      0          
   63    55        FETCH_THIS                                       $48     
         56        INIT_METHOD_CALL                                         $48, 'ErrorPage404'
         57        DO_FCALL                                      0          
   67    58    >   FETCH_CLASS                                   0  $50     !0
         59        NEW                                              $51     $50
         60        DO_FCALL                                      0          
         61        ASSIGN                                                   !7, $51
   68    62        ASSIGN                                                   !8, !1
   70    63        INIT_FCALL                                               'method_exists'
         64        SEND_VAR                                                 !7
         65        SEND_VAR                                                 !8
         66        DO_ICALL                                         $55     
         67      > JMPZ                                                     $55, ->71
   73    68    >   INIT_METHOD_CALL                                         !7, !8
         69        DO_FCALL                                      0          
         70      > JMP                                                      ->73
   78    71    >   INIT_STATIC_METHOD_CALL                                  'Route', 'ErrorPage404'
         72        DO_FCALL                                      0          
   81    73    > > RETURN                                                   null

End of function start

Function errorpage404:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/AA9Rd
function name:  ErrorPage404
number of ops:  15
compiled vars:  !0 = $host
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   85     0  E >   FETCH_R                      global              ~1      '_SERVER'
          1        FETCH_DIM_R                                      ~2      ~1, 'HTTP_HOST'
          2        CONCAT                                           ~3      'http%3A%2F%2F', ~2
          3        CONCAT                                           ~4      ~3, '%2F'
          4        ASSIGN                                                   !0, ~4
   86     5        INIT_FCALL                                               'header'
          6        SEND_VAL                                                 'HTTP%2F1.1+404+Not+Found'
          7        DO_ICALL                                                 
   87     8        INIT_FCALL                                               'header'
          9        SEND_VAL                                                 'Status%3A+404+Not+Found'
         10        DO_ICALL                                                 
   88    11        INIT_FCALL                                               'header'
         12        SEND_VAL                                                 'Location%3A+.%2F404.html'
         13        DO_ICALL                                                 
   89    14      > RETURN                                                   null

End of function errorpage404

End of class Route.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
155.48 ms | 1404 KiB | 21 Q