La recherche de type est un point de débat dans notre société (surtout les gens de Java aiment ça), et je suis un très vieux programmeur PHP (et un programme dans d'autres langues).
Mon conseil est d'éviter les indices de type et d'inclure des gestionnaires try/catch dans chaque fonction complexe. La recherche de type oblige une application à s'appuyer sur l'environnement de gestion des exceptions des appelants, qui est généralement mauvais et n'est pas testé, ce qui constitue le principal problème. Pour les applications web, cela se traduit par l'écran blanc de la mort, pour le lot il en résulte simplement une sortie fatale sans journalisation des bons messages dans la plupart des cas, et vous êtes assis à vous gratter la tête en essayant de recréer le problème retour à résoudre.La gestion des exceptions locales fournit un scénario de test plus contrôlé, y compris les types de données et les valeurs de données, ce qui donne une suite de tests beaucoup plus complète comparée à un chemin de gestion des exceptions difficiles à tester dans l'appelant en transmettant une erreur tapez et attendez l'exception. Le test d'exception échoue également dans de nombreux cas en raison de problèmes de version de la pile (certaines versions de PHP comme 5.4 ne détectent pas correctement les erreurs "fatales" et ergo phpunit meurt simplement en cassant les suites de tests. Problème spécifique, mais dans mon expérience, il n'est pas nécessaire d'utiliser hinting, les gens habitués à un langage typé acceptent PHP mieux sans se rendre compte de l'impact, et provoquent des scénarios de test beaucoup plus complexes. Le Java et les autres utilisateurs de langage typé n'acceptent pas ou ne comprennent pas comment exploiter et profiter des paramètres de type mixte par défaut en PHP ... Ils apprendront un jour, mais seulement s'ils embrasser la voie PHP. ;-)
Les meilleures leçons sont apprises lors du développement de scénarios de tests basés sur des unités PHP robustes, et qui éclaireront normalement pourquoi les indices de type sont une douleur dans la crosse liée au test, et causent beaucoup plus de problèmes que de bien ... Pour chacun d'entre eux, et mes applications fonctionnent mieux et plus fiable et les tests s'avèrent beaucoup plus complets avec une couverture de code généralement de 100%, y compris les chemins d'accès dans les fonctions locales.
Bien, je suis d'accord. Je pense juste que tous ces contrats stricts sont en quelque sorte étrangers à la langue d'origine du type canard. PHP est déjà assez moche, et l'indication de type le fait ressembler encore plus à un tas de fonctionnalités sans rapport. –
Je ne sais pas, PHP est en croissance (POO). Les interfaces strictes pour les types de données complexes ont du sens pour moi. – Mario
En outre, vous obtenez le meilleur des deux mondes, définissez la rigueur là où c'est important ou non, et laissez les petites choses dynamiques. – Mario