bonjour,
mon code vient d'un module de drupal 8 (CMS PHP) mais ma question n'a pas réellement de rapport avec le fonctionnement de drupal 8 mais carrément au niveau de PHP,
le code vient du fichier stepManager.php du module https://www.drupal.org/project/ms_ajax_form_example
la variable $class récupère une valeur tableau en appelant une fonction statique venant d'une classe abstraite nommée "StepsEnum" ( StepsEnum::map($step_id) ) ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public function getStep($step_id) { if (isset($this->steps[$step_id])) { // If step was already initialized, use that step. // Chance is there are values stored on that step. $step = $this->steps[$step_id]; } else { // Get class. $class = StepsEnum::map($step_id); // Init step. $step = new $class($this); } return $step; }
après il y a une nouvelle instanciation de la variable $class qui prend $this en argument !
Je ne comprends pas pourquoi il faut d'abord instancier une nouvelle $class plutot que d'affecter directement la valeur de $class à $step.
Est-ce que ca correspond à un pattern spécifique, et pourquoi passer $this en argument ???
voici le code de la fonction statique 'map' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static function map($step) { $map = [ self::STEP_ONE => 'Drupal\\ms_ajax_form_example\\Step\\StepOne', self::STEP_TWO => 'Drupal\\ms_ajax_form_example\\Step\\StepTwo', self::STEP_THREE => 'Drupal\\ms_ajax_form_example\\Step\\StepThree', self::STEP_FINALIZE => 'Drupal\\ms_ajax_form_example\\Step\\StepFinalize', ]; return isset($map[$step]) ? $map[$step] : FALSE; }
Merci d'avance
Partager