Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 24/08/2012, 17h12   #1
Benjamin Delespierre
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 889
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 25
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 889
Points : 8 580
Points : 8 580
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 ?
__________________
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter

N'oubliez pas de vous servir des bouttons , et
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 45
Vieux 24/08/2012, 19h14   #2
berceker united
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 3 030
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 3 030
Points : 3 991
Points : 3 991
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2012, 22h37   #3
matios
 
Inscription : octobre 2011
Messages : 46
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 46
Points : -6
Points : -6
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, ...).
matios est déconnecté   Envoyer un message privé Réponse avec citation 32
Vieux 24/08/2012, 23h19   #4
raimbow
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 16
Points : 31
Points : 31
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.
raimbow est déconnecté   Envoyer un message privé Réponse avec citation 33
Vieux 25/08/2012, 00h12   #5
ugo-sans-h
Membre du Club
 
Sans H Ugo
Inscription : octobre 2009
Messages : 23
Détails du profil
Informations personnelles :
Nom : Sans H Ugo

Informations forums :
Inscription : octobre 2009
Messages : 23
Points : 58
Points : 58
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.
ugo-sans-h est déconnecté   Envoyer un message privé Réponse avec citation 71
Vieux 25/08/2012, 01h33   #6
arnolem
Rédacteur/Modérateur


 
Avatar de arnolem
 
Inscription : février 2005
Messages : 2 839
Détails du profil
Informations personnelles :
Âge : 27

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

Informations forums :
Inscription : février 2005
Messages : 2 839
Points : 4 594
Points : 4 594
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 ...
arnolem est déconnecté   Envoyer un message privé Réponse avec citation 725
Vieux 25/08/2012, 11h00   #7
Neko
Membre Expert
 
Homme
Développeur informatique
Inscription : juillet 2005
Messages : 543
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

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

Informations forums :
Inscription : juillet 2005
Messages : 543
Points : 2 105
Points : 2 105
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.
Neko est déconnecté   Envoyer un message privé Réponse avec citation 114
Vieux 25/08/2012, 12h56   #8
Conaclos
Futur Membre du Club
 
Homme Victorien Elvinger
Étudiant
Inscription : juillet 2010
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Victorien Elvinger
Âge : 22

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2010
Messages : 12
Points : 18
Points : 18
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.
Conaclos est déconnecté   Envoyer un message privé Réponse avec citation 41
Vieux 25/08/2012, 13h13   #9
grunk
Modérateur
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 2 497
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 28
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 2 497
Points : 5 208
Points : 5 208
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.

Citation:
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 | Recherche CDI dev. Web sur Dijon et alentours.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 31
Vieux 25/08/2012, 14h36   #10
stailer
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 1 007
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

Informations forums :
Inscription : mars 2003
Messages : 1 007
Points : 1 545
Points : 1 545
Citation:
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.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est déconnecté   Envoyer un message privé Réponse avec citation 712
Vieux 25/08/2012, 16h36   #11
camus3
Membre émérite
 
Inscription : juillet 2010
Messages : 603
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 603
Points : 901
Points : 901
En fait ya même plus vraiment besoin de classes au sens strict , puisqu'on peut faires des modules du genre :


Code :
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 :
$myInstance = require("mymodule.php");
un peu à la node.js
camus3 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 25/08/2012, 16h51   #12
ascito
Membre chevronné
 
Inscription : juin 2007
Messages : 567
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 567
Points : 703
Points : 703
Citation:
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
ascito est déconnecté   Envoyer un message privé Réponse avec citation 41
Vieux 25/08/2012, 19h44   #13
matios
 
Inscription : octobre 2011
Messages : 46
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 46
Points : -6
Points : -6
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 ?
matios est déconnecté   Envoyer un message privé Réponse avec citation 03
Vieux 25/08/2012, 20h49   #14
ascito
Membre chevronné
 
Inscription : juin 2007
Messages : 567
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 567
Points : 703
Points : 703
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
ascito est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 26/08/2012, 16h22   #15
demon66
Candidat au titre de Membre du Club
 
Stan
Développeur Web
Inscription : février 2007
Messages : 17
Détails du profil
Informations personnelles :
Nom : Stan

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2007
Messages : 17
Points : 14
Points : 14
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.
demon66 est déconnecté   Envoyer un message privé Réponse avec citation 33
Vieux 26/08/2012, 19h38   #16
jeroy
Membre actif
 
Étudiant
Inscription : avril 2011
Messages : 50
Détails du profil
Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 50
Points : 153
Points : 153
Citation:
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à ?
jeroy est déconnecté   Envoyer un message privé Réponse avec citation 105
Vieux 26/08/2012, 19h50   #17
stailer
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 1 007
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

Informations forums :
Inscription : mars 2003
Messages : 1 007
Points : 1 545
Points : 1 545
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.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est déconnecté   Envoyer un message privé Réponse avec citation 114
Vieux 27/08/2012, 00h47   #18
javan00b
Membre actif
 
Inscription : avril 2009
Messages : 131
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : avril 2009
Messages : 131
Points : 159
Points : 159
Citation:
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.
javan00b est déconnecté   Envoyer un message privé Réponse avec citation 23
Vieux 27/08/2012, 10h33   #19
youccef
Invité régulier
 
Inscription : avril 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 18
Points : 9
Points : 9
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.
youccef est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 27/08/2012, 10h58   #20
Zefling
Membre confirmé
 
Avatar de Zefling
 
Développeur Web
Inscription : avril 2007
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 101
Points : 277
Points : 277
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. »
Zefling est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h35.


 
 
 
 
Partenaires

Hébergement Web