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.

First steps with mBuino

Hello everybody,

By advance sorry for my bad english. I decided to write in english to help Sven and I won’t known if he speaks french.

To have a little explanation about what mbuino is go to kickstarter

So you have to create an account on mbed.org.
If they ask for a platform, you will provide mbed LPC11U24 (We don’t have yet the official mbuino so I chose the same processing unit).

After that you can click over big Compiler button and fall into little program into your browser. It’s an IDE.

Read More…

Posted in C(++) at August 14th, 2014. 2 Comments.

Child theme

ça fait déjà un bout de temps que j’utilise le thème Adventure customisé par mes soins.

Avant évidemment je modifiais le style.css et les pages du thème en fonction de ce que je voulais. mais à chaque mise à jour du thème j’étais reparti pour tout refaire. Plutôt pénible évidemment, mais c’était sans compter sur la (relativement nouvelle) fonction child-theme de wordpress. Celui ci permet de tuner son thème sans devoir tout recopier.
Read More…

Posted in Graphisme, Web at January 24th, 2013. Comments Off on Child theme.

MySQL Alpha Generateur

Tout d’abord il faut créer UN caractère alpha en mysql :

DELIMITER ;;
CREATE PROCEDURE `createAlpha`(
	OUT `rchar` CHAR(1)
)
SELECT CHAR(FLOOR(97 + RAND() * (122 - 97))) INTO `rchar`;;
  • 97 : position du caractère ‘a’ en minuscule
  • 122 : position du caractère ‘z’ en minuscule
  • RAND() : générateur de nombre aléatoire entre 0.0 et 1.0
  • FLOOR() : arrondi au sol (coupe les virgules)
  • CHAR() : transformation en caractère du chiffre

Read More…

Posted in Sql at October 29th, 2012. Comments Off on MySQL Alpha Generateur.

Script init.d pour php-cgi (spawn-fcgi-php)

J’ai longtemps galéré pour trouver un script décent pour lancer php-cgi via init.d utilisant start-stop-daemon.

Intérêt de spawn-fcgi plutôt qu’un mod apache?

  • Privilege separation without needing a suid-binary or running a server as root.
  • You can restart your web server and the FastCGI applications without restarting the others.
  • You can run them in different chroot()s.
  • Running your FastCGI applications doesn’t depend on the web server you are running, which allows for easier testing of/migration to other web servers.

C’est ce dernier point qui m’a fait craquer, apache, nginx, cherokee, autres, tous ou presque supportent un accès à php de cette façon

Je voulais donc vous faire profiter de ma découverte.

Read More…

Posted in Web at January 2nd, 2012. 3 Comments.

Favicon dans un wordpress

Je perds tjrs 2-3 minutes à retrouver comment on intègre une favicon dans un wordpress. So voilà un tit snippet pour plus l’oublier.


Posted in Web at January 2nd, 2012. Comments Off on Favicon dans un wordpress.

Varnish

Comme vous pouvez le voir le blog a revêtu une nouvelle peau, mais également aussi un nouveau moteur de fonctionnement.

J’ai nommé le cache Varnish, en quelques mots c’est un cache très puissant et rapide qui s’intercale entre vos clients et votre serveur afin de l’alléger un maximum.

Ses gros points forts :

  • Sa haute possibilité de configuration tout en gardant un fichier de configuration fort simple à lire
  • Sa configuration transformée en C puis compilée en objet au moment du démarrage du serveur avec la puissance et la vitesse que ça peut permettre vs une lecture de fichier de config ou un langage interprété.
  • Une mise en place néanmoins plutôt simple si on ne veut pas trop toucher.

Read More…

Posted in Web at December 24th, 2011. 1 Comment.