Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  La version 8.1 de PHP et création de la fondation PHP

 -  Décembre 2021 - 

En fin d’année 2021 et sur la lancée habituelle PHP passe en version 8.1. Tout comme les autres versions, elle sera maintenue activement pendant deux années et elle recevra seulement des correctifs de sécurité une année de plus.

Élephant PHP sur un ordinateur portable

Sommaire

Quoi de neuf

Les nouveautés majeures

Les types énumérés

Jusqu’à présent cette structure n’était pas présente nativement dans le langage, elle était néanmoins implémentée dans diverses bibliothèques. C’est la bonne occasion de se débarrasser des classes remplies de constantes.

<?php
enum IP
{
  case V4;
  case V6;
}

// la méthode statique cases() est automatiquement implémentée
IP::cases(); // [IP::V4, IP::V6]

$versionOf = fn(string $address): ?IP => {
 match(true){ 
  case isIpV4($address) => IP::V4,
  case isIpV6($address) => IP::V6,
  default => null
 }
};

$versionOf("192.168.0.1); // IP::V4

Propriétés de classe en lecture seule

Cette fonctionnalité, qui existe déjà dans d’autres langages (C# et TypeScript), fait son arrivée. Elle vous permettra d’avoir un objet dont les propriétés ne pourront plus être modifiées après l’instanciation. Ça va désormais être rapide pour créer des DTO.

class QuelBeauDTO
{
    public function __construct(public readonly string $message){}
}

$dto = new QuelBeauDTO("LinuxFR");

echo($dto->message); // LinuxFR

$dto->message = "Vive les moules"; //Fatal error: Uncaught Error: Cannot modify readonly property QuelBeauDTO::$message

Les types intersection purs

Après les types unions lors de la version précédente, voici l’intersection. Une bonne solution pour favoriser la composition d’interface et améliorer la modularité de nos développements.

interface A{ function a(): string;}

interface B{ function b(): string;}

class Coucou implements A, B
{
    function __construct(private readonly string $a, private readonly string $b){}

    function a(): string
    {
       return $this->a;
    }

    function b(): string
    {
       return $this->b;
    }
}

$ab = new Coucou("coucou", "toto");

$fn = fn(A&B $ab): string => "{$ab->a()} {$ab->b()}";

echo($fn($ab)); // coucou toto

La notion de pureté vient du fait que pour le moment il n’est pas possible d’avoir une signature du genre : A&B|C. Une discussion houleuse s’est tenue quelques jours avant le gel des fonctionnalités sur la possibilité d’avoir des null et la syntaxe qui l’accompagnerait. Pour rappel, les types union ont intégré le langage en version 8.0.

Autres nouveautés

Du code asynchrone avec les Fibers

Jusqu’à présent, la gestion du code asynchrone était gérée du côté des bibliothèques, les plus connues étant Amp, ReactPHP et Swoole. Chaque solution avait implémenté les logiques nécessaires à leur sauce. Avec l’arrivée des fibres dans le langage, les cartes sont rebattues et chacun devra apporter des modifications pour profiter de la partie native. D’ailleurs ReactPHP et Amp se sont associés pour écrire une couche d’abstraction nommée Revolt.

new dans le constructeur et des constantes finales

Les constantes finales ne peuvent pas être redéfinies dans une classe enfant (mais qui utilise l’héritage ???) et il est possible d’intégrer des new directement dans le constructeur.

class A {
  private final const A = "toto";

  public function __construct(private DatetimeImmutable $now = new DateTimeImmutable()){};
}

class B extend A{
  private final const A = "tata"; //Fatal error: B::A cannot override final constant A::A
}

Des performances en hausse

À chaque version, des optimisations sont trouvées et il en résulte de meilleurs résultats sur différents comparatifs. Cette version ne déroge pas à la règle. Un récent comparatif sur des temps de traitement d’une série de 250 requêtes trouve un temps de réponse diminué d’une vingtaine de pourcents pour une application Symfony ou Laravel et une poignée de pourcents pour un site Wordpress.

Pour la suite

Pour ceux qui tournent sur du PHP 7.4, il va falloir songer à passer en version 8.0 dans l’année. Pour rappel, une version est maintenue pendant trois ans (deux ans de maintenance active, un an de maintenance de sécurité). Pour cela, il faut baisser les seuils d’alerte au minimum, corriger ce qui provoque les bouts de code concernés par des alertes à la main ou automatiquement avec des outils du genre Rector.

À l’heure de la rédaction de ces lignes, peu de choses seront incluses dans la prochaine version, mais on peut déjà voir que cela ne sera toujours une somme de choses pour rendre le langage plus cohérent, de suppression de possibilités pour écrire des choses atroces, de simples utilitaires pour ne pas réinventer la roue, etc.

Les changements au niveau de la communauté

PHP est un langage communautaire, à ma connaissance, il n’y a pas d’entreprise qui emploie des personnes pour travailler à plein temps sur le langage. Le langage évolue donc au gré des volontés diverses et variées de proposer des nouvelles fonctionnalités et de les implémenter. Globalement, l’évolution et la maintenance du langage ne tient qu’à une poignée de motivé(e)s. Comme pour la plupart des projets communautaires, toute aide est la bienvenue que ce soit sous la forme de traduction, de documentation, de rapports de bug, pour rajouter du code c’est un poil plus compliqué, car il faut être familier avec le C à la sauce PHP !

Migration progressive sur Github

L’infrastructure vieillissante du projet arrivant au bout de sa vie et un incident de sécurité ce printemps ont poussé à stopper les contributions sur le service git du projet. Alors que le dépôt sur Github servait de miroir, il est devenu la source principale. La gestion des bugs va également se déplacer au même endroit.

Création de la fondation PHP

Jusqu’à présent il n’y avait aucune structure officielle chapeautant le projet et rare ont été les personnes payées pour développer le langage. Ces derniers temps ce nombre ne s’élevait qu’à deux, ce qui pour un langage aussi utilisé que PHP est surprenant, voire désolant. L’un des deux principaux développeurs du projet (Nikita Popov) tant au niveau du code, que des discussions autour des évolutions prévoit de réduire la voilure. Depuis trois ans, il était rémunéré par JetBrains pour travailler sur PHP. Cette fin d’engagement a poussé différentes personnes à finaliser la mise en place d’une fondation afin de supporter financièrement des contributeurs. Vous trouverez plus de détails dans cette annonce. C’est donc une très bonne nouvelle et il faut espérer que les dons des entreprises et des particuliers permettront d’intégrer, de diversifier et consolider le socle des contributeurs.

Commentaires : voir le flux Atom ouvrir dans le navigateur

par Nonolapéro, xdelatour, Florent Zara, Xavier Teyssier, windu.2b, Benoît Sibaud, palm123, Pierre Jarillon

DLFP - Dépêches

LinuxFr.org

Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)


XZ et liblzma: Faille de sécurité volontairement introduite depuis au moins deux mois

 -  31 mars - 

Andres Freund, un développeur Postgres, s’est rendu compte dans les derniers jours que xz et liblzma ont été corrompus par l’un des mainteneurs du (...)