Modern PHP
Si vous voulez lire une remarque appréciative du bouquin voilà la seule chose que j’ai à vous conseiller: Foncez l’acheter
Mon idée pour ce post est juste de créer un petit mémo sur ce que j’ai appris, les “nouvelles” façon de faire. Mais également de relater les ressources à ne pas oublier.
Je n’ai aucunement l’envie de cannibaliser le travail de l’auteur, ce pourquoi je resterai volontairement évasif. De nouveau si vous voulez en savoir plus achetez le bouquin !
Les nouvelles fonctionnalités et des existantes inusitées:
- Les traits
- Les générateurs
- filter_input REMPLACE l’accès aux superglobales $_GET, $_POST, $_COOKIE
- filter_var & FILTER_VALIDATE_* est capable de valider série de chose sans devoir directement sortir les regexps.
- l’API password_* (si vous utilisez une version PHP < 5.5 vous pouvez l’importer: ircmaxell/password-compat)
Les dates et leur gestion:
- DateTime, DateInterval, DateTimeZone, DatePeriod (il existe également une librairie vous facilitant la gestion des dates nesbot/carbon)
Les non-classés:
- Utilisation des PDO::PARAM_* pour spécifier les types des paramètres attachés dans une requête préparée PDO.
- Les fonctions de string multibytes mb_* pour toute chaîne de caractères utf8
- Les streams sont partout et très puissants (Il est possible de gunzipper un fichier à la volée pendant sa lecture)
Les exceptions et leur utilisation:
- Les exceptions à utiliser (au lieu de tout baser sur Exception):
- Les classiques: Exception, ErrorException,
- LogicException et ses enfants: BadFunctionCallException, BadMethodCallException, DomainException, InvalidArgumentException, LengthException, OutOfRangeException,
- RuntimeException et ses enfants: OutOfBoundsException, OverflowException, RangeException, UnderflowException, UnexpectedValueException
- Le try catch finally existe aussi en php
- Il n’est pas très dur (et est une bonne pratique) de transformer toute erreur en ErrorException avec set_error_handler
Les components:
- Les components et composer sont le futur et tellement simples à utiliser que ça en deviendrait honteux de ne pas en manger.
- Les frameworks ne sont pas une mauvaise chose en soit, mais ils doivent évoluer et devenir une agrégation de components plutôt que continuer à implémenter les leurs.
- Toujours exposer des interfaces à la communauté.
- Utilisation des PSR (1 & 2 pour le style, 3 pour la LoggerInterface, 4 pour le chargement des classes)
Tests:
- phpunit évidemment
- SpecBDD
- StoryBDD (Behat)
- XDebug pour le code coverage (utilisation de la balise whitelist pour définir le coverage)
- TravisCI
Profiling:
- XDebug
- XHProf & XHGUI
Benchmarking:
- Apache Bench
- Siege
Les optimisations non relatives au code à proprement parler
- Zend OPcache est dispo à partir de la version .5.5
- Built-in HTTP server: php -S localhost:4000 -c /path/to/php.ini front.php
- Session handling : memcache & redis, les IO sur le disque sont souvent un mauvais choix.
- Déployer son code ça ne se fait plus avec (s)ftp. Capistrano est une bonne alternative. Mais aussi Deployer, Magalanes, Rocketeer
[…] motivations pour cet article sont les mêmes que évoquées dans Modern PHP: Donc juste un bloc-note pour ne rien […]
[…] PHP: New features and good practices (Déjà lu et critiqué sur ce blog auparavant) ISBN: […]