Messages

PHP self or static

En PHP, lorsque nous parlons de variable ou de méthode   static   tel que celle démontrée ci-dessous : class Parent { public static $bar = 10 ; } Cette valeur peut être récupérée de plusieurs façons, afin de démontrer la différence entre  self  et  static , nous allons ajouter une méthode à notre classe pour récupérer la valeur. class Parent { protected static $bar = 10 ; public static getBar () { return self :: $bar ; } } Dans cet exemple, en ayant mis la propriété en  protected , elle n’est plus accessible par aucun autre élément qui ne fait pas partie de sa hiérarchie. Nous pouvons seulement récupérer sa valeur en appelant  Parent::getBar() , qui nous retournera la valeur  10 . Si nous créions une nouvelle classe qui serait un enfant de  Parent . class Enfant extends Parent { protected static $bar = 20 ; } Si nous appelons  Enfant::getBar() , nous allons avoir comme ...

War again custom

  Sur mesure Je ne veux pas dire qu’il y a une guerre, ou que je désire entamer une croisade pour la libération de la roue (je vais y revenir plus tard, je le promets). C’est plus un point de vue sur la création de code qui peut être trop spécifique. Vous êtes-vous déjà retrouvé face à face avec un site ou encore une application web qui déforme tout ce qui existe pour réussir à se frayer un chemin? Ça arrive lorsque plusieurs personnes s’unissent derrière un produit et désire le percevoir d’une façon différente de ce qu’il est réellement. C’est un peu comme un enfant, ces parents ne le trouveront jamais laid. Ce n’est pas essentiellement mauvais, mais d’un autre sens, c’est un allé simple vers une possible catastrophe. Lorsque nous nous trouvons face à face avec un tel code source, nous ne pouvons rien faire d’autre que de le regarder, le fixer, s’interroger, se demander s’il n’est pas un de ces projets qui serait “ legacy ”. Indirectement, il a beaucoup de chance de s’en approcher...

Legacy

Ces vieux projets dont nous ne connaissons pas l’origine exacte, cette structure qui est fragile, ces lignes de code qui travaille sans filet, ces variables qui sont précédés du mot   global   en haut, ou pas, d’une   function   dans un fichier nommé   utils2.new.inc   dont tu sais que Pierre, Jean et Jacques l’ont modifié en décembre 2005, juste avant Noël, pour commencer à utiliser   mysqli   sans même avoir   git   d’installé. Un jour ou l’autre, nous finissons tous par travailler dans l’un de ces projets. C’est ici que nous voyons plusieurs types de programmeur qui ont des mentalités très différentes dans leurs approches. Burn it to the ground! Ce serait un mensonge de dire que ce n’est pas la première idée qui me vient en tête lorsque je rencontre ce type de projet, le jeter dans les flames de l’enfer pour bâtir, encore, une “nouvelle merveille”. Des fois, c’est une bonne solution, lorsque nous avons les ressources nécessaires et un...

What if?

  TRY Les conditionnels, plus spécifiquement les  if/else . Ils font partie intégrante de toutes les applications. Sans eux, une méthode retournerait toujours le même résultat, quoi que… NULL  proxy Débutons par une méthode toute simple. public function detect(?string $type = null) { if ($type === null) { $type = 'default'; } // reste de la méthode } Nous pouvons utiliser l’opérateur  Null coalescent  ( ?? ) pour remplacer ce  if . Cet opérateur existe depuis PHP 7. Il retourne le premier opérande s’il existe et n’a pas une valeur  null ; et retourne le second opérande sinon. Pour ceux qui ont l’œil, c’est quand même encore un  if  bien caché! public function detect(?string $type = null) { $type = $type ?? 'default'; // reste de la méthode } Est-ce que cela rend la méthode  detect  plus facile à lire? Pas nécessairement. Une meilleure question serait de demander si cette condition ne devrait pas se tro...