3v4l.org

run code in 300+ PHP versions simultaneously
<?php // archive-ipq-co.narod.ru error_reporting(-1); class Employee { public $name; // имя-фамилия public $rate; // часовая ставка (сколько он получает тугриков за час работы) public $hours = array(); // массив, содержащий отработанные часы по неделям public function __construct($name, $rate) { // задаем имя и часовую ставку $this->name = $name; $this->rate = $rate; } /** Считает общее число отработанных часов */ public function getTotalHoursWorked() { // Просто складываем значения часов в массиве return array_sum($this->hours); } /** Считает зарплату */ public function getSalary() { // Получаем число отработанных часов $hours = $this->getTotalHoursWorked(); // и умножаем на часовую ставку $salary = $hours * $this->rate; return $salary; } } $ivan = new Employee("Иванов Иван", 10); // name и rate заданы через конструктор, потому осталось лишь написать часы $ivan->hours = array(40, 40, 40, 40); // Иван работает по 40 часов в неделю $peter = new Employee("Петров Петр", 8); $peter->hours = array(40, 10, 40, 50); // Петр взял отгул и потому отработал меньше часов, // но в последнюю неделю решил поработать побольше $employees = array($ivan, $peter); // foreach ($employees as $employee) { // echo "Имя: {$employee->name}\n"; // echo "Ставка, тугриков в час: {$employee->rate}\n"; // echo "Отработал, часов: {$employee->getTotalHoursWorked()}\n"; // echo "Заработал, тугриков: {$employee->getSalary()}\n"; // } // Ширина колонок $col1 = 30; $col2 = 8; $col3 = 8; $col4 = 8; function padRight($string, $length){ } function padLeft($string, $length){ } // Заголовок таблицы echo padRight("Сотрудник", $col1) . padLeft("Часы", $col2) . padLeft("Ставка", $col3) . padLeft("З/п", $col4) . "\n\n"; // Сама таблица foreach ($employees as $employee) { echo padRight($employee->name, $col1) . padLeft($employee->getTotalHoursWorked(), $col2) . padLeft($employee->rate, $col3) . padLeft($employee->getSalary(), $col4) . "\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 46, Position 2 = 75
Branch analysis from position: 46
2 jumps found. (Code = 78) Position 1 = 47, Position 2 = 75
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 46
Branch analysis from position: 46
Branch analysis from position: 75
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 75
filename:       /in/vlZKO
function name:  (null)
number of ops:  77
compiled vars:  !0 = $ivan, !1 = $peter, !2 = $employees, !3 = $col1, !4 = $col2, !5 = $col3, !6 = $col4, !7 = $employee
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   INIT_FCALL                                               'error_reporting'
          1        SEND_VAL                                                 -1
          2        DO_ICALL                                                 
   38     3        NEW                                              $9      'Employee'
          4        SEND_VAL_EX                                              '%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2+%D0%98%D0%B2%D0%B0%D0%BD'
          5        SEND_VAL_EX                                              10
          6        DO_FCALL                                      0          
          7        ASSIGN                                                   !0, $9
   40     8        ASSIGN_OBJ                                               !0, 'hours'
          9        OP_DATA                                                  <array>
   42    10        NEW                                              $13     'Employee'
         11        SEND_VAL_EX                                              '%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2+%D0%9F%D0%B5%D1%82%D1%80'
         12        SEND_VAL_EX                                              8
         13        DO_FCALL                                      0          
         14        ASSIGN                                                   !1, $13
   43    15        ASSIGN_OBJ                                               !1, 'hours'
         16        OP_DATA                                                  <array>
   46    17        INIT_ARRAY                                       ~17     !0
         18        ADD_ARRAY_ELEMENT                                ~17     !1
         19        ASSIGN                                                   !2, ~17
   56    20        ASSIGN                                                   !3, 30
   57    21        ASSIGN                                                   !4, 8
   58    22        ASSIGN                                                   !5, 8
   59    23        ASSIGN                                                   !6, 8
   70    24        INIT_FCALL                                               'padright'
         25        SEND_VAL                                                 '%D0%A1%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA'
         26        SEND_VAR                                                 !3
         27        DO_FCALL                                      0  $23     
   71    28        INIT_FCALL                                               'padleft'
         29        SEND_VAL                                                 '%D0%A7%D0%B0%D1%81%D1%8B'
         30        SEND_VAR                                                 !4
         31        DO_FCALL                                      0  $24     
         32        CONCAT                                           ~25     $23, $24
   72    33        INIT_FCALL                                               'padleft'
         34        SEND_VAL                                                 '%D0%A1%D1%82%D0%B0%D0%B2%D0%BA%D0%B0'
         35        SEND_VAR                                                 !5
         36        DO_FCALL                                      0  $26     
         37        CONCAT                                           ~27     ~25, $26
   73    38        INIT_FCALL                                               'padleft'
         39        SEND_VAL                                                 '%D0%97%2F%D0%BF'
         40        SEND_VAR                                                 !6
         41        DO_FCALL                                      0  $28     
         42        CONCAT                                           ~29     ~27, $28
         43        CONCAT                                           ~30     ~29, '%0A%0A'
         44        ECHO                                                     ~30
   76    45      > FE_RESET_R                                       $31     !2, ->75
         46    > > FE_FETCH_R                                               $31, !7, ->75
   77    47    >   INIT_FCALL                                               'padright'
         48        FETCH_OBJ_R                                      ~32     !7, 'name'
         49        SEND_VAL                                                 ~32
         50        SEND_VAR                                                 !3
         51        DO_FCALL                                      0  $33     
   78    52        INIT_FCALL                                               'padleft'
         53        INIT_METHOD_CALL                                         !7, 'getTotalHoursWorked'
         54        DO_FCALL                                      0  $34     
         55        SEND_VAR                                                 $34
         56        SEND_VAR                                                 !4
         57        DO_FCALL                                      0  $35     
         58        CONCAT                                           ~36     $33, $35
   79    59        INIT_FCALL                                               'padleft'
         60        FETCH_OBJ_R                                      ~37     !7, 'rate'
         61        SEND_VAL                                                 ~37
         62        SEND_VAR                                                 !5
         63        DO_FCALL                                      0  $38     
         64        CONCAT                                           ~39     ~36, $38
   80    65        INIT_FCALL                                               'padleft'
         66        INIT_METHOD_CALL                                         !7, 'getSalary'
         67        DO_FCALL                                      0  $40     
         68        SEND_VAR                                                 $40
         69        SEND_VAR                                                 !6
         70        DO_FCALL                                      0  $41     
         71        CONCAT                                           ~42     ~39, $41
         72        CONCAT                                           ~43     ~42, '%0A'
         73        ECHO                                                     ~43
   76    74      > JMP                                                      ->46
         75    >   FE_FREE                                                  $31
   81    76      > RETURN                                                   1

Function padright:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlZKO
function name:  padRight
number of ops:  3
compiled vars:  !0 = $string, !1 = $length
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   61     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   63     2      > RETURN                                                   null

End of function padright

Function padleft:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlZKO
function name:  padLeft
number of ops:  3
compiled vars:  !0 = $string, !1 = $length
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   65     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   67     2      > RETURN                                                   null

End of function padleft

Class Employee:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlZKO
function name:  __construct
number of ops:  7
compiled vars:  !0 = $name, !1 = $rate
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   12     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   15     2        ASSIGN_OBJ                                               'name'
          3        OP_DATA                                                  !0
   16     4        ASSIGN_OBJ                                               'rate'
          5        OP_DATA                                                  !1
   17     6      > RETURN                                                   null

End of function __construct

Function gettotalhoursworked:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlZKO
function name:  getTotalHoursWorked
number of ops:  6
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   23     0  E >   INIT_FCALL                                               'array_sum'
          1        FETCH_OBJ_R                                      ~0      'hours'
          2        SEND_VAL                                                 ~0
          3        DO_ICALL                                         $1      
          4      > RETURN                                                   $1
   24     5*     > RETURN                                                   null

End of function gettotalhoursworked

Function getsalary:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vlZKO
function name:  getSalary
number of ops:  8
compiled vars:  !0 = $hours, !1 = $salary
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   30     0  E >   INIT_METHOD_CALL                                         'getTotalHoursWorked'
          1        DO_FCALL                                      0  $2      
          2        ASSIGN                                                   !0, $2
   32     3        FETCH_OBJ_R                                      ~4      'rate'
          4        MUL                                              ~5      !0, ~4
          5        ASSIGN                                                   !1, ~5
   33     6      > RETURN                                                   !1
   34     7*     > RETURN                                                   null

End of function getsalary

End of class Employee.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
195.25 ms | 1407 KiB | 25 Q