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 :

Définition d'objet statique et implementation de classe abstraite


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut Définition d'objet statique et implementation de classe abstraite
    Bonjour,

    je voulais trouver l'équivalent PHP de ce code Java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Test {
        public static final MyAbstractClass myAbstractObject = new MyAbstractClass() {
    		public void myAbstractMethod() {
    			// BLA BLA BLA
    		}
    	};
    }
    En bref, 2 questions :
    - comment faire l'implementation anonyme d'une classe abstraite ?
    - comment définir des objets de type statique sans constructeur ?

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    abstract & static ?
    tu as vraiment cherché?

    Les classes anonymes ne sont pas forcement gérées nativement/j'en ai jamais vu, mais avec un peut d'astuce on peut faire un truc équivalent: http://lucato.it/php-anonymous-objects. Par contre je crois qu'on peut faire des fonctions internes à une function foo(){function bar(){echo 'hello word';} } ou une fonction anonyme, par contre je viens d'obtenir le fabuleux message 'Class declarations may not be nested'... donc ya une limite à tout.

    Regarde aussi parmis les outils http://us2.php.net/manual/en/book.reflection.php

  3. #3
    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
    je mets mon avis, en sachant que benjamin, rawurlsrc et les autres seront te dire cela plus précisément mais quand meme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    interface Test
    {
        public function setVariable($name, $var);
        public function getHtml($template);
        final function abstractConstrutor ();
    }
    http://php.net/manual/fr/language.oop5.interfaces.php

    ca c'est le constructeur, dans le lien il y a quelques approches qui me semble compatibles avec ta question

  4. #4
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    abstract & static ?
    tu as vraiment cherché?
    Jutement j'ai cherché, mais apparement la réponse est que ce n'est pas possible. Je connais toutes les astuces pour contourner les problèmes et programmer "salement", je voulais juste savoir si PHP permettait une programation aussi facile et propre du code Java que j'ai mis.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Citation Envoyé par ticroch Voir le message
    - comment faire l'implementation anonyme d'une classe abstraite ?
    Pas possible PHP ne supporte pas les classes anonymes. Par contre il gère les fonctions anonymes
    Citation Envoyé par ticroch Voir le message
    - comment définir des objets de type statique sans constructeur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MonObjetStatic
    {
    	public static function Hello() {return 'world';}
    }
    echo MonObjetStatic::Hello();

    Citation Envoyé par ticroch Voir le message
    Je connais toutes les astuces pour contourner les problèmes et programmer "salement", je voulais juste savoir si PHP permettait une programation aussi facile et propre du code Java que j'ai mis.
    Perso les inner class ça me sort par les yeux quand je fait du Java. Empiler les classe les unes dans les autres je trouve que y'a rien de pire pour la lisibilité du code , comme quoi les gouts et les couleurs ...

    Note que PHP c'est pas JAVA , et y'a aussi plein d'astuce pour codé "proprement" , mais les astuces qui permettent de faire comme dans le langage X c'est en général jamais des bonnes idées. Soit on prend PHP comme il est soit on va vers l'autre langage qui convient plus à nos besoins / envies

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Sujet récurrent sur le forum : abstract et static.
    Un peu de lecture ici et ici

  7. #7
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    class MonObjetStatic
    {
    public static function Hello() {return 'world';}
    }
    echo MonObjetStatic::Hello();
    C'est un attribut que je veux initialiser, les fonctions je sais les faire ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class MonObjetStatic {
            private static final $monObjet = new MonObjet(); // Ne marche pas
    }
    Je sais on peut tjr le définir une fois de l'extérieur (à condition qu'il soit public et non private) ou l'initialiser la première fois que tu en as besoin, mais je voulais essayer de le faire en une ligne !

    Note que PHP c'est pas JAVA , et y'a aussi plein d'astuce pour codé "proprement" , mais les astuces qui permettent de faire comme dans le langage X c'est en général jamais des bonnes idées. Soit on prend PHP comme il est soit on va vers l'autre langage qui convient plus à nos besoins / envies
    Je suis tout à fait d'accord avec toi, malheureusement j'ai pas le choix du langage....

    Perso les inner class ça me sort par les yeux quand je fait du Java. Empiler les classe les unes dans les autres je trouve que y'a rien de pire pour la lisibilité du code , comme quoi les gouts et les couleurs ...
    Pour les inner class OK chacun ses gouts, je trouve ca lisible et surtout très rapide à implémenter. Par contre pour l'initialisation d'un objet statique et final, c'est pas normal qu'on soit obliger de l'initialiser par un appel extérieur je trouve.

  8. #8
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    Bonjour,

    Sujet récurrent sur le forum : abstract et static.
    Un peu de lecture ici et ici
    Merci pour les références, même si je les avaient déjà lu.. et aucun d'eux ne répond à une demes 2 questions !

Discussions similaires

  1. [Débutant] [POO] Définition de Méthodes au sein d'une classe Objet
    Par ghada97 dans le forum MATLAB
    Réponses: 7
    Dernier message: 29/11/2013, 18h31
  2. Réponses: 6
    Dernier message: 09/05/2006, 23h30
  3. Créer une liste d'objets statiques dans une classe
    Par crossbowman dans le forum C++
    Réponses: 3
    Dernier message: 13/03/2006, 09h11
  4. [C#] Comment implementer la classe IComparable ?
    Par luimême dans le forum C#
    Réponses: 2
    Dernier message: 19/01/2006, 16h37
  5. approche objet en python...associer des classes.
    Par preacher_man dans le forum Général Python
    Réponses: 9
    Dernier message: 06/01/2006, 15h21

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