3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Personnage { private $_force; private $_experience; private $_degats; public function frapper(Personnage $persoAFrapper) { $persoAFrapper->_degats += $this->_force; } public function gagnerExperience() { $this->_experience++; } // Mutateur chargé de modifier l'attribut $_force. public function setForce($force) { if (!is_int($force)) // S'il ne s'agit pas d'un nombre entier. { trigger_error('La force d\'un personnage doit être un nombre entier', E_USER_WARNING); return; } if ($force > 100) // On vérifie bien qu'on ne souhaite pas assigner une valeur supérieure à 100. { trigger_error('La force d\'un personnage ne peut dépasser 100', E_USER_WARNING); return; } $this->_force = $force; } // Mutateur chargé de modifier l'attribut $_experience. public function setExperience($experience) { if (!is_int($experience)) // S'il ne s'agit pas d'un nombre entier. { trigger_error('L\'expérience d\'un personnage doit être un nombre entier', E_USER_WARNING); return; } if ($experience > 100) // On vérifie bien qu'on ne souhaite pas assigner une valeur supérieure à 100. { trigger_error('L\'expérience d\'un personnage ne peut dépasser 100', E_USER_WARNING); return; } $this->_experience = $experience; } // Ceci est la méthode degats() : elle se charge de renvoyer le contenu de l'attribut $_degats. public function degats() { return $this->_degats; } // Ceci est la méthode force() : elle se charge de renvoyer le contenu de l'attribut $_force. public function force() { return $this->_force; } // Ceci est la méthode experience() : elle se charge de renvoyer le contenu de l'attribut $_experience. public function experience() { return $this->_experience; } } $perso1 = new Personnage(); // Un premier personnage $perso2 = new Personnage(); // Un second personnage $perso1->setForce(20); $perso1->setExperience(2); $perso2->setForce(70); $perso2->setExperience(58); $perso1->frapper($perso2); // $perso1 frappe $perso2 $perso1->gagnerExperience(); // $perso1 gagne de l'expérience $perso2->frapper($perso1); // $perso2 frappe $perso1 $perso2->gagnerExperience(); // $perso2 gagne de l'expérience echo 'Le personnage 1 a ', $perso1->force(), ' de force, contrairement au personnage 2 qui a ', $perso2->force(), ' de force.<br />'; echo 'Le personnage 1 a ', $perso1->experience(), ' d\'expérience, contrairement au personnage 2 qui a ', $perso2->experience(), ' d\'expérience.<br />'; echo 'Le personnage 1 a ', $perso1->degats(), ' de dégâts, contrairement au personnage 2 qui a ', $perso2->degats(), ' de dégâts.<br />';
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  (null)
number of ops:  56
compiled vars:  !0 = $perso1, !1 = $perso2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   75     0  E >   NEW                                              $2      'Personnage'
          1        DO_FCALL                                      0          
          2        ASSIGN                                                   !0, $2
   76     3        NEW                                              $5      'Personnage'
          4        DO_FCALL                                      0          
          5        ASSIGN                                                   !1, $5
   78     6        INIT_METHOD_CALL                                         !0, 'setForce'
          7        SEND_VAL_EX                                              20
          8        DO_FCALL                                      0          
   79     9        INIT_METHOD_CALL                                         !0, 'setExperience'
         10        SEND_VAL_EX                                              2
         11        DO_FCALL                                      0          
   81    12        INIT_METHOD_CALL                                         !1, 'setForce'
         13        SEND_VAL_EX                                              70
         14        DO_FCALL                                      0          
   82    15        INIT_METHOD_CALL                                         !1, 'setExperience'
         16        SEND_VAL_EX                                              58
         17        DO_FCALL                                      0          
   84    18        INIT_METHOD_CALL                                         !0, 'frapper'
         19        SEND_VAR_EX                                              !1
         20        DO_FCALL                                      0          
   85    21        INIT_METHOD_CALL                                         !0, 'gagnerExperience'
         22        DO_FCALL                                      0          
   87    23        INIT_METHOD_CALL                                         !1, 'frapper'
         24        SEND_VAR_EX                                              !0
         25        DO_FCALL                                      0          
   88    26        INIT_METHOD_CALL                                         !1, 'gagnerExperience'
         27        DO_FCALL                                      0          
   90    28        ECHO                                                     'Le+personnage+1+a+'
         29        INIT_METHOD_CALL                                         !0, 'force'
         30        DO_FCALL                                      0  $16     
         31        ECHO                                                     $16
         32        ECHO                                                     '+de+force%2C+contrairement+au+personnage+2+qui+a+'
         33        INIT_METHOD_CALL                                         !1, 'force'
         34        DO_FCALL                                      0  $17     
         35        ECHO                                                     $17
         36        ECHO                                                     '+de+force.%3Cbr+%2F%3E'
   91    37        ECHO                                                     'Le+personnage+1+a+'
         38        INIT_METHOD_CALL                                         !0, 'experience'
         39        DO_FCALL                                      0  $18     
         40        ECHO                                                     $18
         41        ECHO                                                     '+d%27exp%C3%A9rience%2C+contrairement+au+personnage+2+qui+a+'
         42        INIT_METHOD_CALL                                         !1, 'experience'
         43        DO_FCALL                                      0  $19     
         44        ECHO                                                     $19
         45        ECHO                                                     '+d%27exp%C3%A9rience.%3Cbr+%2F%3E'
   92    46        ECHO                                                     'Le+personnage+1+a+'
         47        INIT_METHOD_CALL                                         !0, 'degats'
         48        DO_FCALL                                      0  $20     
         49        ECHO                                                     $20
         50        ECHO                                                     '+de+d%C3%A9g%C3%A2ts%2C+contrairement+au+personnage+2+qui+a+'
         51        INIT_METHOD_CALL                                         !1, 'degats'
         52        DO_FCALL                                      0  $21     
         53        ECHO                                                     $21
         54        ECHO                                                     '+de+d%C3%A9g%C3%A2ts.%3Cbr+%2F%3E'
         55      > RETURN                                                   1

Class Personnage:
Function frapper:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  frapper
number of ops:  5
compiled vars:  !0 = $persoAFrapper
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    8     0  E >   RECV                                             !0      
   10     1        FETCH_OBJ_R                                      ~2      '_force'
          2        ASSIGN_OBJ_OP                                 1          !0, '_degats'
          3        OP_DATA                                                  ~2
   11     4      > RETURN                                                   null

End of function frapper

Function gagnerexperience:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  gagnerExperience
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   15     0  E >   PRE_INC_OBJ                                              '_experience'
   16     1      > RETURN                                                   null

End of function gagnerexperience

Function setforce:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 9
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 16
Branch analysis from position: 11
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  setForce
number of ops:  19
compiled vars:  !0 = $force
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   19     0  E >   RECV                                             !0      
   21     1        TYPE_CHECK                                   16  ~1      !0
          2        BOOL_NOT                                         ~2      ~1
          3      > JMPZ                                                     ~2, ->9
   23     4    >   INIT_FCALL                                               'trigger_error'
          5        SEND_VAL                                                 'La+force+d%27un+personnage+doit+%C3%AAtre+un+nombre+entier'
          6        SEND_VAL                                                 512
          7        DO_ICALL                                                 
   24     8      > RETURN                                                   null
   27     9    >   IS_SMALLER                                               100, !0
         10      > JMPZ                                                     ~4, ->16
   29    11    >   INIT_FCALL                                               'trigger_error'
         12        SEND_VAL                                                 'La+force+d%27un+personnage+ne+peut+d%C3%A9passer+100'
         13        SEND_VAL                                                 512
         14        DO_ICALL                                                 
   30    15      > RETURN                                                   null
   33    16    >   ASSIGN_OBJ                                               '_force'
         17        OP_DATA                                                  !0
   34    18      > RETURN                                                   null

End of function setforce

Function setexperience:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 9
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 9
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 16
Branch analysis from position: 11
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  setExperience
number of ops:  19
compiled vars:  !0 = $experience
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   37     0  E >   RECV                                             !0      
   39     1        TYPE_CHECK                                   16  ~1      !0
          2        BOOL_NOT                                         ~2      ~1
          3      > JMPZ                                                     ~2, ->9
   41     4    >   INIT_FCALL                                               'trigger_error'
          5        SEND_VAL                                                 'L%27exp%C3%A9rience+d%27un+personnage+doit+%C3%AAtre+un+nombre+entier'
          6        SEND_VAL                                                 512
          7        DO_ICALL                                                 
   42     8      > RETURN                                                   null
   45     9    >   IS_SMALLER                                               100, !0
         10      > JMPZ                                                     ~4, ->16
   47    11    >   INIT_FCALL                                               'trigger_error'
         12        SEND_VAL                                                 'L%27exp%C3%A9rience+d%27un+personnage+ne+peut+d%C3%A9passer+100'
         13        SEND_VAL                                                 512
         14        DO_ICALL                                                 
   48    15      > RETURN                                                   null
   51    16    >   ASSIGN_OBJ                                               '_experience'
         17        OP_DATA                                                  !0
   52    18      > RETURN                                                   null

End of function setexperience

Function degats:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  degats
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   57     0  E >   FETCH_OBJ_R                                      ~0      '_degats'
          1      > RETURN                                                   ~0
   58     2*     > RETURN                                                   null

End of function degats

Function force:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  force
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   63     0  E >   FETCH_OBJ_R                                      ~0      '_force'
          1      > RETURN                                                   ~0
   64     2*     > RETURN                                                   null

End of function force

Function experience:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GoQYf
function name:  experience
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   69     0  E >   FETCH_OBJ_R                                      ~0      '_experience'
          1      > RETURN                                                   ~0
   70     2*     > RETURN                                                   null

End of function experience

End of class Personnage.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.16 ms | 1400 KiB | 15 Q