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 :

L'usage des classes en PHP est-il abusif ? Un développeur allemand pense que oui


Sujet :

Langage PHP

  1. #1
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut L'usage des classes en PHP est-il abusif ? Un développeur allemand pense que oui
    Les développeurs PHP sont-ils fonctionophobiques ? C'est en tout cas ce que pense un jeune développeur allemand. Sur sa page GitHub, nikic déplore la surdominance de l'OOP sur la programmation procédurale et dénonce la pratique selon lui trop répandue de programmation orientée classes.

    D'après lui, cette réticence à utiliser des fonctions viendrait principalement du chargement automatique des classes, une fonctionnalité aujourd'hui largement répandue qui permet le chargement automatique de classes à la demande, ce qui est nativement impossible avec les fonctions. Les développeurs PHP seraient donc tentés d'exprimer leurs besoin au travers de méthodes, ce qui conduit à une approche orientée-classes moins naturelle que l'utilisation de fonctions.

    nikic va jusqu'a dénoncer la pratique courante consitant à isoler chaque classe dans un fichier séparé et invite les développeurs à adopter l'approche Python où chaque fichier caractérise souvent un module et non une seule classe, permettant de ce fait l'usage naturel de fonctions.

    Source : L'article sur le blog de nikic

    Et vous ?

    Trouvez-vous également que l'usage des classes est parfois abusif voire contre-productif ?
    Préférez-vous l'approche procédurale ou objet ?
    Comment structurez-vous votre application ?

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Je sais pas trop ce qu'il veut dire. L'utilisation de classe ou développer en objet. Il est vrai qu'il y en a qui utilise des classes comme des sacs à fonctions.
    Après, l'utilisation d'un fichier par fonctionnalité au lieu que ça soit par classe me semble pas idiot non plus. Il arrive qu'on ait besoin d'une classe qui soit toute petite,dommage d'utiliser un fichier rien que pour ça.
    PHP est fortement influencé par les critiques faite par le monde de Java et tente du coup de côtoyer le standard java tant que possible.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    En effet, PHP est déjà un très bon langage et très complet sans la moindre utilisation de la POO.

    Pourquoi toujours vouloir programmer orienté objet si cela n'est pas nécessaire.

    Par contre, je trouve qu'il est plus clair de créer une classe par fichier (d'ailleurs c'est ce que l'on apprend au cours).

    Pour moi il est mieux de créer un dossier par module (comme Java, PHP) et non un fichier (comme python, ...).

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Points : 38
    Points
    38
    Par défaut
    J'ai pas la même vision des choses...

    Pour moi du fait que le PHP soit relativement simple à prendre à main pour faire de petits sites web conduit à une utilisation massive du langage par des gens non-informaticien ou peu expérimenté. Du coup on se retrouve avec du code parfois assez crade et sans l'ombre de POO.

    Pour ceux qui ont plus de connaissance en programmation et qui utilisent la POO, je ne vois pas vraiment en quoi c'est un problème. Même l'utilisation bancal de la POO ou on fait quelques classes très générique avec 50 ou 100 méthodes du genre Tools() ou SiteWeb() qui regroupent tout et n'importe quoi ne me semble pas nécessairement pire que du code procédural. Surtout qu'il à l'air de dire que les gens font ça pour exploité l'auto-loading qui ne me semble pas un concept utilisé par des débutants. Donc, ça me semble curieux comme réflexion. L'idéal ça aurait été qu'il montre des exemples de code et de classe qu'il considère inutile, ça aurait été mieux pour comprendre ce qu'il veut dire.

    A propos de la technique 1 classe = 1 fichier je ne vois pas d'intérêt à faire ça. Surtout vu le prix moyen du fichier aujourd’hui. Enfin si, ça à du sens si on code avec notepad et pas un IDE qui intègre la navigation oui, mais bon...
    Le gros avantage 1 classe = 1 fichier c'est la facilité de réutiliser une classe (on copie juste le fichier en entier, pas besoin de copier/coller la classe qu'on veut réutilisé parmis 4 ou 5 autre classe). C'est aussi plus pratique lorsque bosse en groupe avec un serveur de versionning. C'est pas rare de bosser sur le même module, mais on bosse rarement sur la même classe.

    En faite en y réfléchissant, vu les IDE actuels, la notion de fichier physique est presque devenu inutile même.

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est un sujet de débat sans fin.

    La popularité de Php viens principalement du fait qu'il peut être utilisé par un néophyte souhaitant un site sur trois pages développé dans la journée, comme de professionnels l'exploitant pour développer de vrais gros logiciels.
    C'est cet souplesse dans son mode d'utilisation qui a fait son adoption.

    La question n'est pas de connaitre et de fixer LA méthode d'exploitation de php, mais avant tout le contexte. Il serais une perte de temps d'installer Symfony pour un site de trois pages sans back office. Il serais difficile de développer, maintenir et versionner un système intranet gérant n bases de données de x Go dans un code purement procédural sans niveau d'abstraction et de séparation des différentes couches et à cela l'OO est très bien adapté.

    Son interrogation est louable, je pense que tout le monde se la pose, et ceux, régulièrement.
    Tout est une question de contexte, je ne pense pas que j'y trouverais une réponse un jour.

  6. #6
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    Mouai, ca c'est de l'actu qui sert a rien.
    En plus, c'est complétement con et inutile ce qu'il dit.
    Place au troll ...

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 541
    Points : 1 898
    Points
    1 898
    Par défaut
    Citation Envoyé par arnolem Voir le message
    Mouai, ca c'est de l'actu qui sert a rien.
    En plus, c'est complétement con et inutile ce qu'il dit.
    Place au troll ...
    Merci pour cette argumentation très complète! Ça donne une super image des "Rédacteur/Modérateur"
    If it's free, you are not the customer, you are the product.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    PhD Student, Engineer, Teaching Assistant
    Inscrit en
    Juillet 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : PhD Student, Engineer, Teaching Assistant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 17
    Points : 32
    Points
    32
    Par défaut
    La pratique de l'Orienté Objet (je parle de la méthodologie) n'est pas à remettre en cause elle apporte de nombreux avantages.

    En revanche la simple utilisation de ce concept comme structure de stockage de fonction (donc leur utilisation en terme de module) est une mauvaise chose. Il est préférable dans ce cas d'utiliser de simples fonctions.

    Mais la déclaration de fonction ce fait de manière globale, ce qui peut poser des problèmes de conflits entre bibliothèque et de maintenance.

    Quant à mettre plusieurs classe dans le même fichier je ne suis pas convaincu.
    Pour moi une classe est la primitive de la modularisation orienté objet.

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Faire une classe quand une simple fonction peut suffire effectivement c'est idiot. C'est d'ailleurs pas rare de voire une classe qui peux simplement se remplacer par une fonction native de php.

    Maintenant je me vois pas maintenir une appli complète en procédurale ou chaque fichier est un module.

    nikic va jusqu'a dénoncer la pratique courante consitant à isoler chaque classe dans un fichier séparé et invite les développeurs à adopter l'approche Python où chaque fichier caractérise souvent un module et non une seule classe
    Perso je l'invite à retourner faire du Python , y sera sans doute plus heureux
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    Trouvez-vous également que l'usage des classes est parfois abusif voire contre-productif ?
    Il n'y a vraiment qu'en PHP qu'on peut malheureusement se poser cette question.

    En PHP, rapport à C# nous avons la "chance" d'avoir 2 modes de programmation :
    1- "A l'arrache" -> procédural
    2 -"Professionnel" -> objet

    En C# on ne peut pas se poser cette question : tout est objet... Et tant mieux.

    J'adore PHP mais je suis toujours déçu de voir sa considération par les développeurs C# ou Java, justement dû à cause du mode "A l'arrache", encore très utilisé par des programmeurs ayant surtout très peur de l'objet.

    Pour moi PHP = Zend Framework, Symfony etc...
    Tout est objet et respecte le MVC (ce qui est le minimum syndical quand on fait une appli dépassant les 3 pages).
    Le seul fichier non objet : index.php , qui lance l'initialisation un peu comme le Global.asax en ASP.NET MVC.
    .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 éprouvé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 657
    Points : 1 240
    Points
    1 240
    Par défaut
    En fait ya même plus vraiment besoin de classes au sens strict , puisqu'on peut faires des modules du genre :


    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
    $x = 0 
     
    $myModule = array();
     
    $myModule["incX"] = function() use($x){
     return $x++;
    }
     
    $myModule["getX"] = function()use($x){
    return $x;
    }
     
    # etc ...
     
    return $myModule ;
    et importer un module de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $myInstance = require("mymodule.php");
    un peu à la node.js

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    Les développeurs PHP seraient donc tentés d'exprimer leurs besoin au travers de méthodes, ce qui conduit à une approche orientée-classes moins naturelle que l'utilisation de fonctions.
    Un code orientée-classes et pour moi à l'inverse de ce qui est dit ici, plus naturelle que l'utilisation abusive de fonctions isolées et désorganisées...

    Dans une class tu y range tout de même littéralement des fonctions.

    Je trouve son raisonnement étrange, et pas du tout évolutif, suis-le seul ?
    Conception / Dev

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par raimbow Voir le message
    A propos de la technique 1 classe = 1 fichier je ne vois pas d'intérêt à faire ça. Surtout vu le prix moyen du fichier aujourd’hui.
    Heu, de quel prix tu parles ??

    Citation Envoyé par raimbow Voir le message
    En faite en y réfléchissant, vu les IDE actuels, la notion de fichier physique est presque devenu inutile même.
    Pourquoi les fichiers physiques peuvent être inutiles ?

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    A la fois, j'ai lu l'article, et me dit que la question n'est pas de savoir si nous devons définir des class personnelles, ou utiliser des fonctions personnelles, mais plus de savoir à quel moment il est bon d'abstraire les objets du langage php déjà disponibles en php natifs ( qui à une incidence sur les version ), et à quel moment il est préférable d'utiliser des fonctions, quand on pense is_function va retourner false ;
    Conception / Dev

  15. #15
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Points : 64
    Points
    64
    Par défaut à débattre
    Je suis tout à fait d'accord avec @ugo-sans-h

    Ce que tu dis est vrai, tout dépend du projet. C'est d'ailleurs pour cela qu'il y a des consultants/développeur.
    Exemple, combien de personne sur le web avons-nous vue poser des questions sur symfony par exemple afin de créer un vulgaire petit blog ou bien petit site ?? Sur le web il y a les écho de technologie en vogue pour les geeks et celles pour les profesionnelles. L'engouement pour symfony2 a déteins sur des développeurs amateurs qui ne connaissaient même pas les frameworks pour certain. Identiquement j'ai bossé dans une web agency en tant que ergonome/intégrateur/développeur sous drupal. Nous n'utilision que drupal et donc par moment nous développions des sites vitrine avec drupal. Quel hérésie.

    Joomla par exemple a bénéficié d'une grande réputation sur le web, mais concrètement en utilisation professionnel, le cms reste tout de même limité de part sa structure et code plutôt bancale dans certaines parties. Même avec la version 2.5 si elle corrige beaucoup de manque, il reste encore des efforts à fournir.

    Nous en revenons à la même problématique qui est de savoir dans à quel contexte sommes-nous rattaché ?
    Est ce que l'utilisation d'un framework ou cms est nécessaire ? Si oui quel framework utiliser ? Quel architecture concevoir ? Devons nous utiliser une librairie de fonctions ou de class.

  16. #16
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 50
    Points : 173
    Points
    173
    Par défaut
    Currently I am 17, am in my last year of school and live in Berlin/Germany.
    Source : http://nikic.github.com/aboutMe.html

    Il doit être très content le petit de se retrouvez en une d'une gros site français de développeurs, censé s'adresser aux "professionnels de l'informatique".

    L'équipe de DVP a une explication à fournir là ?

  17. #17
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 136
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    3
    Par défaut
    DVP n'a pas d'explication à fournir...

    Après voilà, c'est la tendance actuelle : bcp de développeurs prennent comme parole d'évangile le 1er blog en anglais venu.

    Il suffit qu'un gus aux USA écrive que Perl c'est de la bombe et si son blog est bien référencé ça y est : l'article est cité partout et ça fait débat.

    De tout façon aujourd'hui : tout fait débat. Tout se dit et son contraire...
    .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

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 182
    Points : 268
    Points
    268
    Par défaut
    Hi! My name is Nikita Popov, but you'll mostly meet me as nikic on the internet. Currently I am 17, am in my last year of school and live in Berlin/Germany.
    Je comprend pas pourquoi on est en train de parler de tout sa, jai deja été jeune et naif aussi, sa fait parti de la progression normal de la pluspart des développeurs/etudiants, dans quelques années il va probablement revendiquer l'utilisation de la POO avec PHP...

    Si tu ecris quelques petit scripts php, bien sur tu pourras t'en sortir sans POO on le sais tous, à plus grand echelle tu ne peux pas te passer de la POO.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Avril 2007
    Messages : 24
    Points : 27
    Points
    27
    Par défaut POO
    l'un des points forts de la POO est la référence qu'on peut faire aux objets dans la vie reèls, ce qui permet une meilleurs compréhension par les devs.

  20. #20
    Expert confirmé Avatar de Zefling
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    1 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 174
    Points : 4 690
    Points
    4 690
    Par défaut
    Pour moi, ça dépends du projet. J'ai un projet je n'ai qu'une seul classe, tout le reste est en procédural car l'approche objet n'apporte rien, elle complique même les choses. Mais ce n'est pas valable pour tout... Sur un autre projet, j'ai juste un fichier de fonctions qui pallie quelques manques de base et tout le reste est objet. Bref, je dirais : « ça dépends des cas. »

Discussions similaires

  1. Le TDD est mort ? non, pas vraiment, peut-être que oui
    Par Arsene Newman dans le forum ALM
    Réponses: 61
    Dernier message: 16/07/2014, 14h44
  2. Le TDD est mort ? non, pas vraiment, peut-être que oui
    Par Arsene Newman dans le forum Méthodes Agiles
    Réponses: 30
    Dernier message: 12/06/2014, 10h31
  3. [MySQL] Utilisation des class en PHP/MySQL
    Par mymemorial dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/03/2013, 01h02
  4. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 16h10
  5. [POO] PHP et la gestion des classes
    Par Acti dans le forum Langage
    Réponses: 7
    Dernier message: 23/09/2005, 00h06

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