Objets globaux en PHP

étoiles mondiales

Le message sera fondamental dans la programmation - les objets globaux. Je dirais que c'est une question scientifique dont je voudrais discuter. Ainsi, afin de ne pas «tirer sur leurs propres jambes», les programmeurs ne programment pas dans le domaine mondial. Ok, tout est clair et extrêmement simple, insister sur cela? Pas dans ce genre de choses. Comme vous le savez, toute action entraîne une chaîne d'événements et de conséquences logiques.

Premièrement, pourquoi créer un dogme que vous ne pouvez pas créer? À la place, créons une fonction stop_globals (), par exemple, pour le langage PHP. Le framework, au début de l'exécution de son code, peut l'exécuter, et de nouvelles tentatives de travail avec la portée globale provoqueront des erreurs PHP. Cette solution est-elle bonne?

C'est loin de tout ce qui pourrait être discuté.

La raison principale de l'existence du dogme ci-dessus est qu'il existe la possibilité d'écraser accidentellement les valeurs des variables globales, ce qui, à son tour, peut conduire à des erreurs de localisation difficiles dans le programme. Et si vous pouvez utiliser des variables globales pour lire, mais pas pour écrire?

Faisons attention à l'univers qui nous entoure. Il contient des objets globaux: l'espace, le temps, la matière, l'énergie, éventuellement la matière noire et l'énergie. De même, selon mon expérience en programmation Web, il existe un certain nombre d'objets pour lesquels il n'est pas pratique d'utiliser l'injection de dépendance, et ces objets sont essentiellement globaux. Il s'agit d'un objet de communication de base de données, de l'objet USER et d'autres. Pour travailler avec de tels objets, en PHP, on pourrait introduire la fonction super ('sky', 'user'), qui rendrait les variables $ sky et $ user superglobales, comme $ _GET ou $ _POST.

Une telle solution n'est pas pire que le dogme traditionnel «il est impossible de programmer dans le domaine global», car l'écriture de données dans de telles variables sera immédiatement détectée et PHP donnera une erreur, et l'avantage est le suivant:

  1. Conceptuellement, les objets globaux restent globaux, le programme semble plus simple
  2. Cette approche est plus productive. Il est beaucoup plus rapide d'accéder directement à une variable que de passer sa valeur à travers la pile au préalable. Cela signifie la pile du processeur, qui est utilisée par les compilateurs pour transmettre les paramètres de fonction. D'une manière ou d'une autre, la mise en œuvre du modèle DI a une surcharge sur les ressources utilisées.

Comme vous le savez, le projet PHP se positionne comme un éléphant, étant donné qu'il offre de nombreuses approches de programmation, un grand nombre de fonctions et de classes, une abondance de code expérimental qui peut être évalué dans le temps et qui peut être développé ou supprimé à l'avenir. À cet égard, je demande aux personnes libres d'esprit d'exprimer leur avis motivé sur les questions:

  1. Soutenez-vous l'introduction des fonctions expérimentales super () et stop_globals ()?
  2. Que pensez-vous de l'idée ci-dessus dans son ensemble?

Pas de guerre sainte, merci.

En conclusion, je voudrais noter mon observation concernant laravel et les dangers des modèles de programmation. Comme vous le savez, le laravel est appelé le "magasin d'antipatterns" . Je crois que ce fait, ainsi que la libre pensée de son auteur, ont permis à ce projet de devenir aussi populaire qu'il l'est. Les modèles sont bons pour que les programmeurs communiquent, pour pointer vers une entité de programmation. Mais ils nuisent, déroutant les programmeurs, ne permettant pas aux programmes d'être efficaces. Rendons la programmation plus facile.

Source: https://habr.com/ru/post/fr423151/


All Articles