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
Posted in Web by El Gnap at May 23rd, 2015.
Tags: , , , ,

2 Responses to “Modern PHP”

  1. […] motivations pour cet article sont les mêmes que évoquées dans Modern PHP: Donc juste un bloc-note pour ne rien […]

  2. […] PHP: New features and good practices (Déjà lu et critiqué sur ce blog auparavant) ISBN: […]