65 votes

Activation globale de 'strict_types' dans PHP 7

Je migre actuellement mon site Web de PHP5 vers PHP7, et j'ai commencé à utiliser la fonction de frappe stricte qui a été ajoutée. Cependant, cela nécessite que je commence tous les fichiers avec la ligne suivante:

 <?php declare(strict_types=1);

// All other code here
// ...
 

Je me demandais donc, est-il possible d'activer strict_types globalement en utilisant quelque chose comme php.ini ou le fichier de configuration d'apache donc je n'ai pas à écrire cette ligne à chaque fois, et si c'est le cas comment pourrais-je activer cela?

78voto

IMSoP Points 16089

C'est délibérément pas possible, parce que la mise en œuvre adoptée après une très longue discussion de type scalaire conseils a été celle-ci: https://wiki.php.net/rfc/scalar_type_hints_v5

Il donne explicitement le choix de comment des types scalaires sont vérifiées à l'appelant de toute fonction, non de son auteur, de sorte que:

  • si vous écrivez une bibliothèque de type scalaire conseils, vos fonctions sont garantis les types de paramètres demandés, même si elle est appelée par du code non écrit en mode strict (les types sont contraints à la place)
  • si vous écrivez une bibliothèque et que vous voulez traditionnel typage faible, vous pouvez toujours faire usage de bibliothèques qui utilisent le type de conseils (parce qu'ils ne vous force pas à effectuer la vérification de type stricte)
  • a l'inverse, si vous écrivez une bibliothèque et que vous voulez typage strict pour les fonctions que vous appelez, vous n'avez pas à exiger que les utilisateurs de votre bibliothèque permettent également typage strict
  • les fonctions intégrées de la même manière que définis par l'utilisateur, et code existant fonctionne de la même façon par défaut
  • si vous tournez sur typage strict, vous devez modifier votre code pour manipuler correctement de toute façon

C'est donc à vous de dire à PHP les fichiers qui ont été écrites à l'utilisation stricte de type mode, et qui n'ont pas; et la façon de le faire est d'utiliser l' declare déclaration.

7voto

Danilo Calzetta Points 1111

Essentiellement non.

Parce que si vous n'avez besoin que de bibliothèques utilisant le mode strict, vous provoquerez une séparation inutile des packages. Considérez également que l'option types stricts / faibles n'est qu'un extra en PHP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X