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 :

Syntaxe de base d'une class à l'affichage [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Syntaxe de base d'une class à l'affichage
    Je bloque avec l'affichage. Qu'est-ce qui ne va pas?

    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
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    class produit{
     
    public $prix;
    public $item;
    public $id;
    public $color;
     
        public function afficher($prix,$item,$id,$color) {
                    echo $this->prix;
                    echo $this->item;
                    echo $this->id;
                    echo $this->color;
        }
     
    }
     
    $instancenom = new produit();
    $instancenom->afficher("22","Régulier","7BDAAQJKKFA5N","ffae00")
     
    ?>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    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 : 47
    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
    Salut,

    dans ta fonction afficher($prix,$item,$id,$color), les arguments ne servent à rien dans la mesure où tu affiches les valeurs des variables de classe : toutes celles précédées par $this. N'oublie pas que dans ta fonction d'affichage : $prix est différent de $this->prix

  3. #3
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    La syntaxe correct?
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  4. #4
    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 : 47
    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
    Plutôt dans ce 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
    16
    17
    18
    19
    20
    class Produit
    {
        private $prix;
        private $item;
        private $id;
        private $color;
     
        public function afficher($prix, $item, $id, $color)
        {
            $this->prix  = $prix;
            $this->item  = $item;
            $this->id    = $id;
            $this->color = $color;
     
            echo $this->prix, $this->item, $this->id, $this->color;
        }
    }
     
    $instancenom = new Produit();
    $instancenom->afficher("22", "Régulier", "7BDAAQJKKFA5N", "ffae00")

  5. #5
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Merci rawsrc.

    La définition de $this->prix dans la méthode.


    On oublie souvent la simplicité ou la base dans la vie: Maslow

  6. #6
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Y-t-il moyen d'éviter le codage HTML dans une class PHP?

    Mon tableau et mon formulaire dans la class m'évitent que mon fichier soit trop volumineux et mes objets sont plus lisible.
    J'aimerais si possible connaître le moyen de factoriser le code soit en faisant 2 class ou un autre manière de faire.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    class produit{
        public $prix;
        public $item;
        public $id;
        public $color;
     
        public function afficher($prix,$item,$idpaypal,$color) {
     
            $this->prix  = $prix;
            $this->item  = $item;
            $this->id    = $id;
            $this->color = $color;
     
            ?>
                            <table>
                                    <tr>
                                            <th <?=$this->prix?> $</th>
                                    </tr>
                                    <tr>
                                    <td>
                                            <form action="domain.com" method="post" target="_blank">
                                                    <fieldset>
                                                            <legend><?=$this->item?></legend>
                                                                    <input type="hidden" name="id" value="<?=$this->id?>">
                                                                    <input submit value"Envoyer">
                                                    </fieldset>
                                            </form>
                                    </td>
                                    </tr>
                            </table>
            <?php
        }
    }
     
    $instancenom = new produit();
    $instancenom->afficher("22","Régulier","7BDAAQJKKFA5N","ffae00");
    $instancenom->afficher("25","Spécial","7BDAQJKKFA5N","ffae07");
     
    ?>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  7. #7
    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 : 47
    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
    Salut,

    c'est loin d'être simple de pondre une architecture séparant proprement le métier de la vue surtout quand tu ne maîtrises pas sur le bout des ongles la programmation orientée objet.

    Quelques pistes :
    - le php est expert dans la gestion des tableaux, sers toi en pour le passage des données
    - aborde différemment la problématique : sépare l'approche en concept pour le métier et block pour la vue
    - utilise les espaces de nom pour organiser le code à architecturer
    - n'oublie pas que tout ce qui est affiché dans le navigateur doit être obligatoirement échappé (pour l'instant chez toi rien ne l'est...)
    - factorise au maximum en te servant des principes de la POO et fuit la redondance de code comme la peste (d'ailleurs dès que tu dois faire un copier-collé de code, arrête-toi et prends du recul pour essayer de contourner cet écueil)
    - laisse la possibilité à l'utilisateur d'injecter des fonctions de traitement aux classes (surtout dans les vues) car il est impossible de tout prévoir d'entrée de jeu. Il faut pouvoir rendre souple le fonctionnement sans affaiblir la rigidité de l'architecture (pas simple sans une bonne dose d'expérience derrière)

    Bon, il y a de quoi écrire encore un pavé et sinon rabat toi sur de l'existant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 25
    Dernier message: 11/08/2010, 15h54
  2. Réponses: 7
    Dernier message: 08/12/2009, 16h29
  3. Réponses: 2
    Dernier message: 24/06/2009, 12h30
  4. Réponses: 4
    Dernier message: 06/04/2008, 18h34
  5. Objet de base d'une classe derivée
    Par Seth77 dans le forum C#
    Réponses: 7
    Dernier message: 03/05/2007, 13h39

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