Rechercher une fonction PHP

Modifications internes à PHP

  • Les extensions ne peuvent plus surcharger zend_execute() et devraient désormais surcharger zend_execute_ex() à la place. EG(current_execute_data) est déjà initialisé dans zend_execute_ex(), donc, pour rester compatible, les extensions peuvent avoir à utiliser EG(current_execute_data)->prev_execute_data à la place.
  • Suppression de EG(arg_types_stack), EX(fbc), EX(called_scope) et EX(current_object).
  • Ajout de op_array->nested_calls, qui est calculé au moment de la compilation.
  • Ajout de EX(call_slots), qui est un tableau permettant de stocker des informations sur les appels imbriqués (i.e. foo(bar())) et est pré-alloué avec execute_data.
  • Ajout de EX(call), qui est un pointeur vers la fonction appelante courante, et est un élément de EX(call_slots).
  • Les opcodes INIT_METHOD_CALL, ZEND_INIT_STATIC_METHOD_CALL, ZEND_INIT_FCALL_BY_NAME et ZEND_INIT_NS_FCALL_BY_NAME utilisent result.num comme index dans EX(call_slots).
  • L'opcode ZEND_NEW utilise extended_value comme index dans EX(call_slots).
  • Les opcodes ZEND_DO_FCALL et ZEND_DO_FCALL_BY_NAME utilisent op2.num comme index dans EX(call_slots).
  • Ajout de op_array->used_stack, qui est calculé lors de la compilation ; l'espace de la pile correspondant est pré-alloué avec execute_data. Comme résultat, les opcodes ZEND_SEND* et ZEND_DO_FCALL* n'ont plus besoin de vérifier les éventuels dépassements de pile.
  • Suppression du champ execute_data->Ts. Les variables temporaires VM sont toujours allouées immédiatement avant la structure execute_data, et sont maintenant accédées par leur position depuis le pointeur de base execute_data au lieu d'utiliser execute_data->Ts. Le compilateur stocke les nouvelles positions dans op_array->opcodes[*].op?.num. Les macros EX_TMP_VAR() et EX_TMP_VAR_NUM() peuvent être utilisées pour accéder aux variables temporaires par leur position ou leur numéro. Vous pouvez convertir le numéro en position en utilisant EX_TMP_VAR_NUM(0,num) ou la position en numéro en utilisant (EX_TMP_VAR_NUM(0,0)-EX_TMP_VAR(0,offset)).
  • Suppression du champ execute_data->CVs. Les variables VM compilées sont toujours allouées immédiatement après la structure execute_data, et sont désormais accédées par leur position depuis le pointeur de base execute_data au lieu d'utiliser execute_data->CVs. Vous pouvez utiliser la macro EX_CV_NUM() pour accéder aux variables compilées par leur numéro.
Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-migration55.internals.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut