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 :

Comment organiser une classe php ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 153
    Par défaut Comment organiser une classe php ?
    Bonjour à tous.

    D'après vous, y a-t-il une bonne façon de ranger les propriétés et les fonctions à l'intérieur d'une classe PHP ?
    Y a t-il une logique meilleure qu'une autre pour que d'autres développeurs relisent le code facilement ? Ou une standardisation a adopter ?

    Par exemple, grouper les static en fin de classe, ou les public au début et les private à la fin ? Ou par ordre alphabétique ?

    Merci pour vos avis éclairés !

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Il n'y a pas de règles universelles. Voici ce que je fais:

    - Les constantes d'abord
    - Les propriétés (ordre: private, public)
    - méthodes publiques d'abord (stables, elles forment l'API de la classe, elles ne changent jamais de signature ou de retour). En général, les autres développeurs ont juste besoin de voir ces méthodes et n'ont pas à voir les méthodes privées.
    - méthodes privées (instables, elles peuvent changer du jour au lendemain)
    - jamais de classe mélangeant méthodes normales et statiques (et rarement des statiques, d'ailleurs)

    Autres conseils:

    - fais des classes simples et courtes. Ça améliore considérablement la lisibilité et la facilité à comprendre ce que fait la classe.
    - Même chose pour les méthodes: simples et courtes, ne pas hésiter à extraire un morceau de code pour la transformer en méthode.
    - Utilise des noms explicites pour les méthodes et les variables afin qu'on n'ait pas besoin de lire le code pour savoir ce que fait la méthode
    - Ne mélange pas les termes anglais et français (du genre setFichier). Utilise l'anglais (un bon développeur doit être bon en anglais), c'est la langue universelle du développement. Dans le pire des cas, utilise le français, mais surtout ne mélange pas les deux.
    - Les propriétés sont des noms (money, currency), les méthodes sont des verbes d'action (askMoney(), changeCurrency())

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    J'approuve la majorité de ce qu'a dit Tsilefy, cependant, il est judicieux de n'avoir qu'une classe par fichier (machins PSR4), or si tu as 50.000 classes, ça fait 50.000 chargements de fichier, c'est du PHP donc vaut mieux limiter le nombre de classe.
    Attention cependant, il ne faut pas qu'une classe dépasse ses fonctions métiers, ce pour quoi elle est faite, on évite qu'une classe User affiche elle-même du HTML...
    Donc, je te conseille de faire les fonctions statiques que tu as besoin, elles servent souvent à gérer (semi-)automatiquement une ou plusieurs instances de la classe, à faire une manipulation qui est propre à la classe mais qui ne requiert pas le contexte de l'instance...

    Pour le reste, je suis d'accord, le standard, c'est : constantes, attributs (propriétés), méthodes d'instance (fonctions), méthodes de classes (fonctions statiques).

    protected n'a pas été mentionné, c'est l'un des plus importants :-P

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Citation Envoyé par IGstaff Voir le message
    J'approuve la majorité de ce qu'a dit Tsilefy, cependant, il est judicieux de n'avoir qu'une classe par fichier (machins PSR4), or si tu as 50.000 classes, ça fait 50.000 chargements de fichier, c'est du PHP donc vaut mieux limiter le nombre de classe.
    Mais comme une classe n'est chargée que quand elle est utilisée, le nombre de fichiers n'importe pas tant que ça. Ajoutes-y opcache qui évite de recompiler les scripts à chaque nouvelle exécution, le nombre de fichiers n'a en pratique pas d'effet sur la performance.


    Citation Envoyé par IGstaff Voir le message
    protected n'a pas été mentionné, c'est l'un des plus importants :-P
    C'est vrai. J'utilise rarement l'héritage et choisis en priorité la composition. Mais oui, si il y a des propriétés ou méthodes protected, il faut les mettre entre public et private.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    Mais comme une classe n'est chargée que quand elle est utilisée, le nombre de fichiers n'importe pas tant que ça. Ajoutes-y opcache qui évite de recompiler les scripts à chaque nouvelle exécution, le nombre de fichiers n'a en pratique pas d'effet sur la performance.
    On parle ici de classes utilisées pour remplir les même fonctionnalités. Opcache permet de bien alléger la compilation mais il peut être gênant aussi, il faut bien l'utiliser.

    Citation Envoyé par Tsilefy Voir le message
    C'est vrai. J'utilise rarement l'héritage et choisis en priorité la composition. Mais oui, si il y a des propriétés ou méthodes protected, il faut les mettre entre public et private.
    C'est une question de pratiques :-P J'utilise la composition avec parcimonie, mais les 2 ne s'excluent pas, quand tu fais de la composition, souvent t'as de l'héritage derrière, ou au moins une interface (pas de protected dans ce cas...).
    Je préconise l'utilisation de protected sur le private, même si c'est peu courant car on voit trop de libs ou scripts dans lesquels on doit faire un gros doublon car on n'a pas accès à un truc qui pourrait paraître évident, ça permet plus de généricité et d'adaptabilité, ça n'en fait pas cependant une règle absolue.

    Bref, c'est des discussions très intéressantes mais je suis pas sûr que les forums d'entraide soient le meilleur endroit, il y a-t-il vraiment un meilleur endroit ? Les sujet de débat en prog, y'en a des milliards...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bien sûr que les forums d'entraide sont indiqués pour ce genre de discussion. L'entraide ne se limite pas qu'aux petits problèmes de code, les débutants peuvent aussi apprendre énormément des discussions plus architecturales (et plus généralistes). Après, ce n'est peut-être pas le bon fil de discussion, je te le concède :-)

    Comme tu le dis, j'ai une forte préférence pour les interfaces, que je préfère mille fois à l'héritage. Et si je fais de l'héritage, c'est souvent des classes abstraites. Quand aux doublons, on a les traits pour ça: conceptuellement ça n'est pas de l'héritage, c'est juste du copier-coller de code, et c'est exactement ce qu'il me faut.

Discussions similaires

  1. Comment récupérer une variable déclarée GLOBALE dans une classe PHP
    Par Globolite dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 08/03/2013, 14h41
  2. [VS2005] comment organiser une solution avec plusieurs classes
    Par mahboub dans le forum Visual Studio
    Réponses: 1
    Dernier message: 15/04/2008, 11h49
  3. Réponses: 3
    Dernier message: 04/09/2007, 17h00
  4. [Applet] Comment envoyer une variable php au java?
    Par abstractor77 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 09/03/2006, 11h18
  5. Réponses: 1
    Dernier message: 07/09/2005, 23h15

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