Modern PHP – Les liens composer

Mes motivations pour cet article sont les mêmes qu’évoquées dans Modern PHP: Donc juste un bloc-note pour ne rien n’oublier:

Gestion des erreurs:

  • filps/whoops: remonte et montre une éventuelle erreur ainsi que toute la stacktrace facilitant le debug
  • monolog/monolog: logguer implémentant la fameuse PSR3.

Http requests:

  • guzzle/guzzle: l’API curl en component
  • modernphp/scanner tester la validité de liens

Validation:

  • aura/filter
  • respect/validation

Construction d’infrastructures VM:

Posted in Web at May 25th, 2015. Comments Off on Modern PHP – Les liens composer.

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 at May 23rd, 2015. 2 Comments.