IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP ne craint plus, examinons les changements de langage intervenus depuis la sortie de PHP 5.4


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2024
    Messages : 1
    Points : 8
    Points
    8
    Par défaut PHP ne craint plus, examinons les changements de langage intervenus depuis la sortie de PHP 5.4
    PHP ne craint plus, examinons les changements de langage intervenus depuis la sortie de PHP 5.4, par Víctor Falcón Ruíz

    Je suis fatigué de lire toujours le même message : « PHP, c'est nul ». Mais la plupart de ces critiques n'ont pas regardé PHP depuis 2012, et beaucoup de choses ont changé depuis.


    Jetons un coup d'œil aux changements de langage qui ont eu lieu depuis la sortie de PHP 5.4.

    Traits (PHP 5.4)

    PHP 5.4 a introduit les traits, qui permettent la composition plutôt que l'héritage. Vous pouvez avoir des traits et les inclure dans chaque classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    trait SayWorld {
        public function sayHello() {
            echo 'World!';
        }
    }
     
    class MyHelloWorld {
        use SayWorld;
    }

    Syntaxe de tableau courte

    L'époque où l'on écrivait array() comme un homme des cavernes est révolue. Vous pouvez désormais utiliser les crochets pour une syntaxe de tableau courte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $newArray = [
      'first',
      'second',
      'third'
    ];

    Destructuration de tableau

    L'affectation d'un tableau à une variable temporaire appartient au passé. Vous pouvez désormais utiliser la déstructuration de tableau pour affecter directement des variables à partir d'un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $newArray = [
      'first',
      'second',
      'third'
    ];
     
    $anotherArray = [
      ...$newArray,
      'fourd',
      'fifth'
    ];

    Fonctions variadiques de première classe

    Vous pouvez passer autant d'arguments que vous le souhaitez à une fonction en utilisant la syntaxe ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Variadic {
      public function query($query, ...$attributes) {
        var_dump($query, $attributes);
      }
    }
     
    $v = new Variadic();
     
    $v->query('select * from users', 1, 'Víctor');
     
    // result 'select * from users', 1, 'Víctor'

    Générateurs

    Vous avez besoin de faire quelque chose qui demande beaucoup de mémoire de manière efficace ? Les générateurs sont la solution. Vous trouverez ici plus d'informations sur les générateurs.

    Classes anonymes

    Vous avez besoin d'une nouvelle classe, mais vous n'avez pas le temps de créer un nouveau fichier ? Les classes anonymes sont la solution. Elles peuvent implémenter une interface comme n'importe quelle autre classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $anonymousClass = new class{
      public $property = 1;
     
      public function add(int $x): int
      {
        return $this->property + $x;
      }
    }
     
    echo $anonymousClass->propert; // 1
    echo $anonymousClass->add(2);  // 3

    Virgules flottantes (PHP 7)

    Plus besoin de se préoccuper de l'ajout d'une virgule finale à un appel de fonction ou de méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class TrailingComma {
      public function action(
        int $x,
        int $y, // <- This comma causes an error before
      ) {
        echo $x + $y;
      }
    }

    Fonctions fléchées

    PHP dispose également de fonctions fléchées. Elles ne sont pas exactement comme celles de JavaScript, mais elles sont un excellent ajout au langage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $y = 1;
     
    $fn1 = fn($x) => $x + $y;
     
    $x = $fn1(2); // 3

    Opérateur de coalescence Null (PHP 7)

    Plus besoin de vérifier la présence de null avant d'assigner une valeur. L'opérateur null coalescent vous couvre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // If user is null or undefined, 'nobody' is assigned
    $username = $_GET['user'] ?? 'nobody';

    Assignation avec l'opérateur de coalescence Null (PHP 7.4)

    Et si vous avez besoin de raccourcir l'opérateur de coalescence null, il y a un opérateur d'assignation pour cela aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Value of $_GET['user'] change if is undefined or null
    $_GET['user'] ??= 'nobody';

    Opérateur de chaînage Null (PHP 8)

    Plus besoin de vérifier la présence de null avant d'appeler une méthode. L'opérateur de chaînage null est là pour sauver la situation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Customer {
        public function getAddress(): ?Address {}
    }
     
    class Address {
        public function getCountry(): string {}
    }
     
    // Null if no Address
    $country = $customer->getAddress()?->getCountry();

    Arguments nommés (PHP 8)

    Vous en avez marre d'utiliser null pour ignorer les arguments optionnels ? Les arguments nommés sont la solution.

    Imaginez que vous avez une fonction avec beaucoup d'arguments, dont certains sont nullables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function takes_many_args(
        $first_arg,
        $second_arg = 'any',
        $third_arg = 5,
    )
    {
        // ...
    }

    Avant vous devez envoyer le $second_arg par défaut, même si vous ne le changez pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    takes_many_args('first', 'any', 3);

    Maintenant, vous pouvez simplement faire quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    takes_many_args('first', third_arg: 3);

    Instruction match (PHP 8)

    Fini les instructions switch qui font des kilomètres de long. L'instruction match est une façon plus compacte et plus lisible d'écrire les instructions switch.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $food = 'cake';
     
    $return_value = match ($food) {
      'apple' => 'This food is an apple',
      'bar' => 'This food is a bar',
      'cake' => 'This food is a cake',
      default => 'Unknown food',
    };
     
    var_dump($return_value); // 'This food is a cake'

    Enums (PHP 8.1)

    Les enums sont enfin là ! Vous pouvez créer des classes enum avec des valeurs et des méthodes, et même les utiliser comme indices de type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    enum Suit
    {
        case Hearts;
        case Diamonds;
        case Clubs;
        case Spades;
    }
     
    function do_stuff(Suit $s)
    {
        // ...
    }
     
    do_stuff(Suit::Spades);

    Sûreté des types

    PHP a maintenant des arguments typés, des types de retour, des types d'union, des types d'intersection, et plus encore. Vous pouvez même utiliser des indices de type pour les enums !

    Nous pouvons maintenant ajouter des types aux arguments, aux valeurs de retour, aux propriétés des classes, aux constantes, et à presque tout.

    Nom : screenshot-2024-05-09-20.54.40.png
Affichages : 90390
Taille : 62,8 Ko

    Promotion des propriétés du constructeur (PHP 8.0)

    Le temps des constructeurs verbeux est révolu. La promotion des propriétés du constructeur est là pour réduire le code de la chaudière.

    C'est l'un des meilleurs ajouts à PHP, maintenant les classes sont super simples et nous n'avons pas besoin d'écrire les propriétés de classe plus d'une fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Customer
    {
        public function __construct(
            public string $name, 
            public string $email, 
        ) {}
    }

    Propriétés ReadOnly (PHP 8.1)

    Maintenant, nous n'avons plus besoin de créer des getters et setters personnalisés et de définir une visibilité privée pour chaque méthode.

    Avec le flag readonly, nous pouvons protéger nos propriétés des modifications en dehors de la classe elle-même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Customer
    {
        public function __construct(
            readonly public string $name, 
            readonly public string $email, 
        ) {}
    }

    En PHP 8.3, les classes anonymes readonly (en lecture seule) ont été ajoutées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $class = new readonly class {
        public function __construct(
            public string $name = 'Víctor',
        ) {}
    };

    Performance

    Les performances de PHP ont augmenté de 400 % entre la version 5.6 et la version 7, et de 20 % entre la version 7 et la version 8.

    Il est suffisamment rapide pour la plupart des cas d'utilisation, et si vous avez besoin d'un cas d'utilisation spécialisé, utilisez un langage spécialisé.

    Conclusion

    En conclusion, PHP n'est pas mort, et il n'est plus nul. Le langage a subi des changements significatifs depuis 2012, et il est grand temps de réviser nos opinions à son sujet.

    Avec l'introduction des traits, de la syntaxe de tableau courte, de la déstructuration de tableau, et d'une foule d'autres fonctionnalités, PHP est devenu un langage plus efficace, plus lisible, et plus facile à maintenir.

    Ajoutez à cela les améliorations dans la gestion des erreurs, l'introduction des attributs et l'arrivée tant attendue des enums, et il est clair que PHP est devenu un choix robuste et fiable pour le développement web.

    Ainsi, la prochaine fois que quelqu'un vous dira que PHP est nul, vous pourrez lui répondre en toute confiance qu'il est resté dans le passé.

    Source : "PHP Doesn't Suck Anymore" (par Víctor Falcón Ruíz)

    Et vous ?

    Quel est votre avis sur le sujet ?
    Partagez-vous l'avis selon lequel PHP serait nul ? Selon vous, pourquoi le langage souffre-t-il d'une telle réputation auprès de certains utilisateurs ?

    Voir aussi :

    PHP 8.2 est disponible et s'accompagne des propriétés "en lecture seule" aux classes, ainsi que la possibilité de déprécier les propriétés dynamiques

    PHP 8.3, mise à jour majeure du langage PHP, est disponible, parmi les nouvelles fonctionnalités : le typage explicite des constantes de classe, le clonage profond des propriétés en lecture seule

  2. #2
    Membre à l'essai
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 16
    Points : 17
    Points
    17
    Par défaut PHP et ses concurrents
    Bonjour,

    Et merci pour ce comparatif.

    Quel est le taux de compétence de PHP pour la création d'un site aujourd'hui ?
    Quel sont ses langages concurrents, quel est leur taux de compétence, et couvrent-ils l'entièreté des fonctionnalités de PHP ? (ex : comparatif entre un bon diesel et un véhicule électrique ).

    Je suis par avance désolé si mes questions sont hors de propos.

    Je suis débutant sur PHP, que je trouve intéressant par les fonctionnalités qu'il autorise mais aussi inquiet de savoir qu'il est identifié comme obsolète ou archaïque aujourd'hui.

    Merci pour vos réponses.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 639
    Points : 43 627
    Points
    43 627
    Par défaut
    Pour ce que j'en sais, les principaux autres langages utilisés pour faire du web sont le Go, Python
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre à l'essai
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Merci pour la réponse.
    Je ne connaissais pas Go. Je viens de découvrir qu'il y avait Ruby on Rails également.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 639
    Points : 43 627
    Points
    43 627
    Par défaut
    Ma liste n'était pas forcément exhaustive
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 140
    Points : 2 184
    Points
    2 184
    Billets dans le blog
    3
    Par défaut
    J'ai aimé ce langage et il était encore mon préféré avec c# en 2002-2004... Mais on va pas se mentir : ça fait des années que les évolutions sont minimes et avec peu d'intérêt, tellement les évolutions des autres langages (python, c#, java par exemple) sont énormes.

    Je peux faire un tableau de génériques en php ? non
    Je peux surcharger une méthode avec params supplémentaires ? non
    Des VRAIS getters setters ? non (les méthodes avec "get" devant le nom, c'est du gros fake puisque si je sors l'objet en JSON : ben les propriétés sortent pas puisque getMaPropriété n'est pas une prop mais une méthode... bref)

    Allez bim, 3 exemples objet de base que php ne peut toujours pas faire... en 2024 c'est plus possible...
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  7. #7
    Membre à l'essai
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Merci pour cette précision.
    En ce qui me concerne, mon niveau étant très bas, le Flight Level des objets cités n'est pas dans mon objectif.
    J'espère me mettre sérieusement à PHP, tenter de maîtriser la conception d'un site avec liaison à une base de donnée MySql. Ensuite, verra qui pourra.

  8. #8
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Points : 379
    Points
    379
    Par défaut
    Citation Envoyé par stailer Voir le message
    Des VRAIS getters setters ? non (les méthodes avec "get" devant le nom, c'est du gros fake puisque si je sors l'objet en JSON : ben les propriétés sortent pas puisque getMaPropriété n'est pas une prop mais une méthode... bref)
    ça dépend à partir de quand en 2024, car dans la version 8.4 qui sortira en fin novembre il y a des VRAIS getters setters https://wiki.php.net/rfc/property-hooks

    Allez bim, un exemple de moins
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  9. #9
    Membre à l'essai
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    "car dans la version 8.4 qui "sortira" en fin novembre" ?????
    Stailer n'a donc pas si tord.

  10. #10
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 140
    Points : 2 184
    Points
    2 184
    Billets dans le blog
    3
    Par défaut
    "Allez bim, un exemple de moins "

    Ouaaaa, on pourra faire des vrais getters/setters, en prod en 2025 ??!!! Mais c'est incroyable ! quelle avancée au niveau objet du langage... Et sinon les tableaux d'objets c'est pour quand ? 2036 ? Sérieux...............

    En plus c'était vraiment des exemples simples. Je pourrais t'en citer 2000 autres malheureusement.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  11. #11
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 140
    Points : 2 184
    Points
    2 184
    Billets dans le blog
    3
    Par défaut
    A titre personnel (et je comprends qu'on soit pas d'accord), il y a aussi des évolutions de "non-sens" sur le langage.

    Par exemple, on peut multi-typer une méthode !!! Je trouve ça flou et très dangereux. Par exemple on pourrait se retrouver avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function getUnMachin(Document|Repertoire|Client $jesaispas) : MonCousin|Voiture|int|bool {
       return $moncousin_OU_mavoiture_OU_monint_OU_monbool; 
    }
    C'est complètement fou d'avoir donné cette possibilité... Mon exemple est très exagéré mais il fonctionne ! Quelle ineptie : le but de l'objet est bien davoir des... objets. Pas de dire que je veux passer n'importe quoi pour que n'importe quoi puisse me retourner n'importe quoi d'autre.

    Alors dans ces cas là autant revenir à php5 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function getUnMachin($jesaispas){
     
    }
    Voilà... ça revient presque à ça. Je suis vraiment pas d'accord avec cet ajout qu'ils ont fait sur le langage.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  12. #12
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 140
    Points : 2 184
    Points
    2 184
    Billets dans le blog
    3
    Par défaut
    "Nous pouvons maintenant ajouter des types aux arguments, aux valeurs de retour, aux propriétés des classes, aux constantes, et à presque tout."

    Aller, encore une petite couche pour me faire plaisir

    "presque tout" .... ou "presque rien" ? Est-ce que je peux typer une variable ? Et ben non.... Toujours pas.

    Je peux toujours pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function methodSample() : void{
       
        int $x = 4; 
        $x = 'cool'; 
    
    }
    au pire on pourrait faire le code suivant comme en c# :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function methodSample() : void{
       
        var $x = 4; 
        $x = 'cool'; 
    
    }
    Mais non, on peut pas.

    T'as une variable qui peut commencer par être un int, devenir une chaine et finir par être un objet en fin de méthode. Si tu tombes sur un projet avec un dév pas bon et qui a connut que PHP, le gars il a fait ça partout c'est une certitude.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/01/2020, 10h58
  2. Réponses: 24
    Dernier message: 09/09/2018, 11h14
  3. [CSS] Probleme dans les changements de couleurs
    Par caneman dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 30/07/2005, 18h43
  4. les changements du protocol ipv4 ----> ipv6
    Par m-unix dans le forum Développement
    Réponses: 1
    Dernier message: 26/10/2004, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo