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 bien programmer en PHP ? [Débat]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Community Manager

    Profil pro
    Inscrit en
    Avril 2014
    Messages
    4 207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2014
    Messages : 4 207
    Par défaut Comment bien programmer en PHP ?
    Bonjour

    ma question et la suivante :

    Comment bien programmer en PHP ?

    Donc si vous avez des conseils, des truc à utiliser/éviter et d'autres choses.

    Par exemple :
    Code le plus court :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=0; $i<count($array); $i++)
    {
      echo $array[$i];
    }
    Code le plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $count = count($array);
    for ($i=0; $i<$count; $i++)
    {
      echo $array[$i];
    }
    Merci d'avance
    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour,

    pour ma part :

    - Bien indenter le code pour une meilleure lisibilité
    - Bien commenter le code , même si ça prend du temps. Tu seras content dans 6 mois d'avoir pris le temps de commenter ton code . . .

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    • Toujours bien mettre en place un algo, voir un cahier des charges bien pensé avant de se plonger dans le code. Pour cette étape, il est important de connaître les règles de sécurité, quelles peuvent être les failles : http://php.developpez.com/faq/?page=securite

    • Perso, je sépare bien les "unités" de mon programme, par exemple :
    cfg.php // Constante et variable de configuration
    bbd.php // Fonctions d'accès à la base de données
    func.php // Diverses fonctions, conversion, traitement
    mail.php // Fonctions d'envoi de mail
    forms.php // Formulaires html de saisie
    etc...
    J'inclus les unités les unes aux autres avec Require_once().

    • J'utilise les tableaux pour les constantes, variables, données... et la commande global pour les intégrer dans mes fonctions. Par exemple, dans le script "cfg.php", tu trouveras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $cfg['db_server']  = 'localhost';         // Nom du serveur
    $cfg['db_name']    = 'mybase';            // Nom de la base
    $cfg['db_table']   = 'membres';           // Nom de la table
    $cfg['db_login']   = 'root';              // Le login d'accès de la base
    $cfg['db_pass']    = '';                  // Le mot de passe de la base
    $cfg['linkid']     = '';                  // Handle de la connection
    Et dans le script "bdd.php" :
    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
    Require_Once('cfg.php');
    Require_Once('func.php');
     
    //============================================================ 
    //  CONNECTION A LA BASE DE DONNEES
    //============================================================
    function OpenBase($first=false){
      global $cfg;
     
      //----------------------------------------------------------
      // Déjà connecté -> Exit
      //----------------------------------------------------------
      if(!empty($cfg['linkid'])) return true;
     
      //----------------------------------------------------------
      // Test de connection su serveur
      //----------------------------------------------------------
      if(!$cfg['linkid']=@mysql_connect(
        $cfg['db_server'],
    • Je commente bien mon code (mais pas trop) et j'utilise des séparations pour améliorer la lisibilité et structurer le code. Je n'utilise pas de tabulation, que des espaces car d'un éditeur à l'autre, la valeur des tabulations peuvent être différentes et desindenter ton code. Le résultat est assez surprenant parfois.

    • J'utilise les simples quotes dans tous les cas, excepté pour encadrer les requêtes SQL où j'utilise les doubles quotes, car avec mon editeur PHP, il est possible de choisir une couleur différente. Ainsi, je repère tout de suite où se trouvent les requêtes SQL.

    • J'utilise de péréférence des "echo" pour intégrer du code HTML, CSS ou Javascript dans mes scripts PHP. J'évite de fermer les balises PHP (?>) ou sinon, je mets tout le code HTML, CSS ou Javascript dans un autre fichier.

    • Bien garder à l'esprit que ton code sera probablement lu par d'autres développeurs.

  4. #4
    Membre confirmé Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Par défaut
    Merci

    Donc est ce qu'il y a des normes à suivre, parce que parfois on arrive à des situations ambiguës (usine a gaz).

    Par contre en java il existe plusieurs solutions permettant de structurer la programmation.

    Donc si vous avez des exemples d’architecture ou des projets (perso) qui se base sur des architectures (MVC par exemple).

  5. #5
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573

  6. #6
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Il vaut mieux toujours privilégier l'optimisation.

    Par exemple les chaines de caractères avec des simples quotes et non pas des doubles. (Ne pas avoir la fleme de concaténer les variables). Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'Bonjour, '. $pseudo . ' Ca va ?';
    Biensûr bien identer et commenter.

    Separer au maximum les fichiers selons leur context et non pas faire un fichier de function tout bordélique.

  7. #7
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 241
    Par défaut
    Mais il faut avoir des sous.

    L'utilisation de template simplifie vraiment le code.

  8. #8
    Invité de passage
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Par défaut
    Citation Envoyé par Sub0

    • J'utilise les tableaux pour les constantes, variables, données... et la commande global pour les intégrer dans mes fonctions.
    Personellement, je n'utilise jamais de déclaration global. Non seulement, cela rend le code beaucoup plus difficile à lire et à maintenir (surtout lorsqu'il y a plusierus developpeur sur un même projet) mais également moins sécurisé (une variable globale pouvant être modifié à n'importe quel endroit.
    Pour rendre global des variable, j'utilise tout simplement le design-pattern "singleton".

    Pour php 4, un singleton s'obtient par le code :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
    class MySingleton {
     
        var $options;
     
        var $loaded;
     
        function isInstance($obj) {
            return is_object($obj) === false
                ? false
                : (is_a($obj, 'MySingleton') === false
                    ? false
                    : (is_subclass_of($obj, 'MySingleton') == false
                        ? false
                        : true));
        }
     
        function &getInstance() {
            static $instance;
            if (MySingleton::isInstance($instance) == false) {
                $instance = new MySingleton();
            }
     
            return $instance;
        }
     
        function MySingleton() {
            $this->options = array();
     
            $this->loaded = false;
        }
     
        function isLoaded () {
            return $this->loaded;
        }
     
        function getOptions () {
            return $this->options;
        }
     
        function fill ($file) {
            $this->options = parse_ini_file($file, true);
            $this->loaded = true;
        }
     
        function store ($key, $value) {
            $this->options[$key] = $value;
        }
     
        function has ($key) {
            return array_key_exists($key, $this->options);
        }
     
        function get ($key) {
            return $this->options[$key];
        }
     
     
    }
     
     
    ?>
    et s'utilise :
    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
     
    // dans init.php, par exemple
    // tres important, sans l'esperluette, vous obtener une copie du singleton
    // et aucune modification ne sera appliquées à la propriété static $instance
    // A noter : en php4, on ne peut pas faire : MySingleton::getInstance()->une_methode()
    // vive le modèle objet de php4
    $_s = &MySingleton::getInstance();
    $_s->fill('./conf/db.ini');
     
    // dans un autre fichier
    // pour juste recuperer un valeur
    MySingleton::getInstance()->get('bd_name');
     
    // pour modifier une valeur
    // cf ci dessus.
    $_s = &MySingleton::getInstance();
    $_s->set('db_name', 'db_test');
    en php 5, le code est nettement plus simple:
    • les objet n'étant plus manipulé en tant que copie mais en tant que référence
    • php5 supportant les membres statique ainsi que la visibilité
    • l'opérateur instanceof
    • on peut enfin "enchainer" les fonctions


    Ce qui donne :
    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
     
    <?php
    class MySingleton {
     
        static protected $instance;
     
        protected $options;
     
        protected $loaded;
     
        public function isInstance($obj) {
            return is_object($obj) === false
                ? false
                : ($oj instanceof MySingleton);
        }
     
        public function getInstance() {
            if (MySingleton::isInstance(self::$instance) == false) {
                self::$instance = new MySingleton();
            }
     
            return $instance;
        }
     
        protected function MySingleton() {
            $this->options = array();
     
            $this->loaded = false;
        }
     
        ...
     
     
    }
    ?>
    et s'utilise :
    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
     
     
    // dans init.php, par exemple
    // tres important, sans l'esperluette, vous obtener une copie du singleton
    // et aucune modification ne sera appliquées à la propriété static $instance
    // A noter : en php4, on ne peut pas faire : MySingleton::getInstance()->une_methode()
    // vive le modèle objet de php4
    MySingleton::getInstance()->fill('./conf/db.ini');
     
    // dans un autre fichier
    // pour juste recuperer un valeur
    MySingleton::getInstance()->get('bd_name');
     
    // pour modifier une valeur
    // cf ci dessus.
    MySingleton::getInstance()->set('db_name', 'db_test');

    De façon générale, je pense qu'il faut toujours penser à utiliser les design-pattern de base (beaucoup sont décrit dans la section http://uml.developpez.com/ et on en trouve pas mal sur le site de zend ) et a découper le code metier de la vue a proprement dite (en utilisant un framework MVC ou bien en faisant marcher sa tête).

    Pour ceux qui ne veulent / peuvent pas utiliser de framework dédié à la gestion du MVC, je conseillerais de toujours séparer le code "fonctionel" du code de l'affichage. Pour cela, la "construction" de page suivante, même si elle est extremement sommaire, le permet :

    • si on a accès à la propriété auto_prepend, rajouter un script qui charge la configuration principale du site (source de données, configuration php, etc...). On peut également passer par mod_rewrite via apache mais c'est beaucoup moins bien
    • la page commence par traité les actions possible de la page (traitement des formulaires, etc...)
    • la page récupère les données a traiter
    • on affiche la page avec les données récupérées précédement


    Cette dernière démarche peut sembler evidente mais je connais beaucoup de développeur qui s'ammuse à imbriquer du SQL dans du HTML dans du traitement de formulaire.

    Enfin, une dernière note (que j'ai failli oublier) : la première chose à faire est de savoir quel encodage de fichier on utilise (UTF-8 ou ISO - php 5 et inf. on de gros problème avec l'UTF-8, hélas), si on utilise des espaces à la place des tabulation et de formater son code en suivant un guideline (il y en a plein, personellement, j'utilise celui de SUN)...et ne pas avoir peur de bien aerer son code source...
    Ceux qui pensent que cela est inutile non jamais fait de debuggage urgent sur un serveur de production ou il y a que VI...




    Je pourrais continuer des heures et des heures comme à parler des meilleurs pratiques de codage - surtout pour le web - mais mon patron n'apprécirais peut-être pas

  9. #9
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Bon, ça c'était pour le coté objet, j'attaquerai le coté optimisation classique où "comment éviter d'appliquer bêtement des recettes de cuisine" plus tard !
    C'est bien la première fois que je lis ça.
    L'utilisation de simpe quote n'est pas une "recette de cuisine", mais une règle. PHP autorise l'incorporation porc de variable directement dans des string, mais ça n'est PAS une utilisation normal.
    Une variable est une variable et un string, c'est un string. Dans tous les langages c'est comme ça. Ensuite, pour un string, le simple quote est plus rapide car par déf, il n'est pas parsé. Donc pourquoi ne pas naturellement prendre le plus rapide?

    J'ai vu une quantité de développeurs s'imaginer qu'en faisant de la POO ils auraient un code propre et optimisé.Arrêtez de rêver.
    J'ai aussi vu un paquet de gens mettre des $_POST ou $_SESSION directement dans des classes, c'est effectivement porc. J'ai vu des gens mettre la couche métier dans la vue car ça va plus vite...On a tous vu plein de codes porcs.
    La POO n'est-elle pas pour autant une très bonne manière de faire un code clair?
    Pcq des gens s'en servent mal, il ne faut plus s'en servir?


    Malheureusement avec PHP, l'objet se résume à cela. Et faire de l'objet avec un langage non typé qui ne gère pas la surcharge d'opérateur ça vous semble "optimisé" ?
    PHP5 gére la surcharge de quelques opérateurs.
    Je vois pas le lien entre optimisation et surcharge d'opérateur...
    Le C ne gère pas la surcharge d'opérateur....pas optimisé

    Bref, le sujet n'est pas l'optimisation, mais la propreté du code.
    Tu as l'air d'en savoir long sur le sujet, pourtant, je vois rien de concret, que des remarques négatives, rien de constructif

    Bon, ça c'était pour le coté objet, j'attaquerai le coté optimisation classique
    Que ça soit Objet ou classique, je vois pas ce que tu as apporté à ce topic
    Explique nous ceci par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pour faire de la bonne POO il faut faire une bonne conception objet.
    80% des lecteurs n'ont à mon avis pas saisis le sens direct de ta phrase.

    ++

    Pour tofou.letram
    vive le singleton
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  10. #10
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2004
    Messages : 84
    Par défaut
    Quelques "trucs et astuces" généraux et rapides pour PHP :

    http://www.webdevlogs.com/php-speed-freaks/

    On y trouve par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $i = 0;
    $count = count($array);
    while($i < $count){
        ++$i;
    }
    est mieux que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $i = 0;
    while($array[$i]){
        ++$i;
    }

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Par défaut
    Merci d'avoir réagit à mon post.

    Citation Envoyé par wamania
    C'est bien la première fois que je lis ça.
    L'utilisation de simpe quote [...] Donc pourquoi ne pas naturellement prendre le plus rapide?
    As-tu déjà mesuré l'impact en terme de performance de cette bonne pratique ?
    Je ne suis pas sûr que ce soit flagrant. On doit gagner un petit peu.
    Par contre au niveau de la lisibilité du code c'est la même chose.
    Finalement c'est une bonne pratique "par principe".

    La POO n'est-elle pas pour autant une très bonne manière de faire un code clair?
    Non, c'est une manière différente, c'est tout. Une bonne manière de faire un code clair est d'avoir des algorithmes clairs.

    Bref, le sujet n'est pas l'optimisation, mais la propreté du code.
    Tu as l'air d'en savoir long sur le sujet, pourtant, je vois rien de concret, que des remarques négatives, rien de constructif
    La propreté du code n'a-t-elle pas d'intérêt que si elle permet d'optimiser son temps de maintenance ou d'évolution ?
    C'est donc bien lié.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pour faire de la bonne POO il faut faire une bonne conception objet.
    80% des lecteurs n'ont à mon avis pas saisis le sens direct de ta phrase.
    C'est vrai que je n'ai pas été très clair.
    La programmation objet est à la mode, ce qui entraine beaucoup de développeurs à penser que c'est mieux de faire de la POO que pas (cf. autres posts de ce topic).
    Pour moi, soit on aborde un problème donné suivant une méthode de conception objet et donc on l'implémentera naturellement avec un langage objet. Soit on l'aborde d'une manière "fonctionnelle" et alors je ne vois pas l'intérêt d'utiliser des objets.
    Tout ça pour dire que le choix de la POO n'a pas de sens c'est avant tout un choix sur une méthode de conception.
    Et donc la POO n'est pas un gage de qualité, ni d'optimisation (ni de compétence...).

  12. #12
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Voila un sujet que j'aime mettre mon grain de sel dedans

    Pour moi, clairement lisibilité à l'échelle de l'architecture, optimisation au niveau plus atomique.
    Car
    • Pour l'architecture en général, on gagnera peu à optimiser vraiment, ou alors c'est tres mal conçu dès le départ.
    • A l'échelle atomique (je parle en gros la syntaxe ligne par ligne), un petit gain pour une toute petite perte de lisibilité, c'est bien.
    Enfin, après c'est au jugement personnel en fonction de la demande.

    Cependant, quelques points esentiels pour moi :
    Un fichier doit être soit:
    - une page (donc directement/indirectement appelable depuis une url)
    - une classe (et une seule par fichier)
    - une config.

    Les fichiers "placards", je trouve ça pas propre. En général, je n'en fait qu'un, qui regroupe les points communs à chaque pages (inclusion des classes, autoload, récup des configs, objet $db...) et éventuellement un fichier de fonctions avec vraiment l'inclassable.

    L'important ensuite est de respecter la POO, genre l'encapsulation des données.
    Une séparation nette de la vue est obligatoire. Ecrire directement du code HTML dans du PHP ou inversement, c'est pas propre et intenable. L'utilisation de fonctions soigne un peu cet aspect, mais au final, ça reste du HTML dans du PHP, d'autant plus que l'encapsulation des données, ça compte aussi pour une fonction et qu'un echo, c'est une sortie comme une autre. (d'ailleurs, vaut mieux éviter les global dans les fonctions et y préferer le singleton, en utilisant non pas des tableaux pour la config, mais des objets conteneurs (style Entity de java)).

    Bref, pour la vue, des templates, ou mieux (mais quand même plus compliqué) le couple XML/XSLT.

    Bon oki, je n'applique pas à la lettre absolument tout ce que je dit, mais j'essaie au mieux.

    Pour répondre à Fadex, il existe le fameux MVC (Modèle vue contrôleur) qui consiste à séparer ces 3 couches.
    La vue j'en ai parlé au dessus. Le modèle correspond en gros à tes données et donc ton accès à la base dans ton cas.
    Ca signifie globalement que ton script n'a pas à savoir d'ou viennent ces données, et donc il ne faut pas utiliser de fonction spécifique à telle ou telle base, mais une classe.
    Ainsi au lieu de mysql_query, tu auras $db->query.
    Si ta base devient Postgresql, au lieu de pq_query, tu aura tjs $db->query, mais avec un $db différent. Il te suffit de changer le fichier contenant la déclaration de $db et hop, t'as changer de base.

    Bon, j'arrete avant d'écrire un livre.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  13. #13
    Membre confirmé Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Par défaut
    voila ce que je cherche

    Pour répondre à Fadex, il existe le fameux MVC (Modèle vue contrôleur) qui consiste à séparer ces 3 couches.
    La vue j'en ai parlé au dessus. Le modèle correspond en gros à tes données et donc ton accès à la base dans ton cas.
    il est ou le controleur ?

    Mais comment appliquer l'architecture MVC dans un projet PHP ?

    J’ai des petites expériences avec J2EE, mais ça reste pour moi une usine à gaz , oui c vrais qu’il y a beaucoup de doc mais ça reste de la théorie.

    Donc est ce que vous avez un tuto ou un site qui explique comment mettre en place cette architecture.

    Je t’encourage pour terminer le livre .

    [edit]voila ce que j'ai trouvé : PHPMVC[/edit]

  14. #14
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    D'une façon très simple, la vue, c'est un template (comme Smarty), ou la classe de PHPLib modifiée par PHPBB qui est très utilisée, par moi notamment), le modèle, tu utilises une classe de connexion à une BDD (genre PDO), le contrôleur, c'est toi et ta page.

    Pour aller plus loin, il y a des frameworks comme le Zend Framework et pleins d'autres en fait.
    Va donc faire un tour ici http://tahe.developpez.com/web/php/mvc/

    PS :
    voila ce que j'ai trouvé : PHPMVC
    Je trouve que c'est une grosse usine, c'est une reproduction en PHP de struts. Si tu trouve que J2EE est une usine, oublie PHPMVC
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  15. #15
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    Citation Envoyé par fadex
    par exemple :
    Code le plus court :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=0; $i<count($array); $i++)
    {
      echo $array[$i];
    }
    Code le plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $count = count($array);
    for ($i=0; $i<$count; $i++)
    {
      echo $array[$i];
    }

    Autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ($i=0, $count = count($array); $i<$count; $i++)
    {
      echo $array[$i];
    }
    Sinon pour bien programmer :

    - Bien organiser son code (ne pas hésiter à chercher de nouvelles méthodes)
    - Développer en POO
    - Se créer des bibliothéques, librairies (ou utiliser de l'existant) pour faire le plus modulaire possible
    - Bien documenter son code (de façon intelligente)
    - Etre en constante veille technologique pour améliorer ses methodes de développement

    ...

    Et bien d'autres choses mais je vais m'arréter là ;0)

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Par défaut Optimisation
    D'utiliser des simples cotes à la place de double ou toutes les autres petites recette de cuisine que je viens de voir ce n'est pas de l'optimisation. De faire de la POO non plus.

    J'ai vu une quantité de développeurs s'imaginer qu'en faisant de la POO ils auraient un code propre et optimisé. Arrêtez de rêver. Pour faire de la bonne POO il faut faire une bonne conception objet. Et c'est autre chose que de fourrer son code dans des objets. Malheureusement avec PHP, l'objet se résume à cela. Et faire de l'objet avec un langage non typé qui ne gère pas la surcharge d'opérateur ça vous semble "optimisé" ?

    Bon, ça c'était pour le coté objet, j'attaquerai le coté optimisation classique où "comment éviter d'appliquer bêtement des recettes de cuisine" plus tard !

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 11
    Par défaut
    Citation Envoyé par fadex
    Bonjour

    Code le plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $count = count($array);
    for ($i=0; $i<$count; $i++)
    {
      echo $array[$i];
    }
    merci d'avance
    Est ce que la construction foreach serait plus lente?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    foreach ($array as $v) echo $v;

  18. #18
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Par défaut
    Très vaste sujet mais
    Citation Envoyé par fadex Voir le message
    Par exemple :
    Code le plus court :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=0; $i<count($array); $i++)
    {
      echo $array[$i];
    }
    Code le plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $count = count($array);
    for ($i=0; $i<$count; $i++)
    {
      echo $array[$i];
    }
    Merci d'avance
    Je préconise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($array as $valeur) echo $valeur;
    C'est plus court, plus lisible qu'un for(), et honnêtement la performance à ce niveau on s'en fiche un peu. Comme disait l'auteur de "le zen de l'optimisation du code", optimise au max mais uniquement là où tu peux mesurer un gain utile.

    Par ailleurs je n'ai pas encore lu les 11 pages de réponses, mais pour moi bien programmer en PHP c'est d'abord
    - du code concis, lisible, qui fait uniquement ce qui est utile, des variables/fonctions bien nommées, un code que l'on puisse remanier si le besoin se précise ou qu'il change
    - des tests unitaires et fonctionnels
    - des règles respectées : register_global à off, oubli des parties qui seront désactivées en PHP6 (long array par exemple), éviter les globals
    - coder avec l'affichage des erreurs au max et n'en laisser passer aucune
    - capter toutes les erreurs qui surviennent sur un site en production et les corriger (ou en tout cas les gérer) au fur et à mesure

  19. #19
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1
    Par défaut Help
    Bonjour a tous, je suis nouveau membre et j'ai un peut de mal a m’initier au php.
    C'est pourquoi je viens vous demander un petit service.

    J'ai une table "X" avec plusieurs informations dont un num tarif (1 pour les résidents et 2 pour les non résidents), parallèlement j'ai créé un "formulaire.php" pour que les clients entrent leurs informations (dont le pays ou ils résident) et un "transfert.php" pour que les infos du formulaire soient transmises à la base de donnée.
    Voilà ma question:

    Il me faudrait le code (If/ else .. oui je m'y connais un peu quand même..) pour que le num tarif affiche 1 ou 2 en fonction du pays du client.

    Merci de votre aide.
    Cordialement,

  20. #20
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    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
    Par défaut
    Quid de la génération de doxydoc avec eclipse ?
    ça fonctionne très bien et c'est très pratique à utiliser. De plus, si le build path du projet et setté correctement, Eclipse n'a pas besoin de fichier de documentation supplémentaire.

    C'est un peu chiant sa en php de ne pas avoir un format de doc officiel. ou je me trompe ?
    Il faudrait avant tout qu'ils normalisent un peu mieux le langage
    Je vous renvoie à l'excelent article qui fait référence en la matière: http://blog.roshambo.org/20-possible...ers-are-weird/

Discussions similaires

  1. Comment commencer à programmer avec PHP, SQL-Server 2000
    Par DevLib dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/05/2012, 11h51
  2. Comment bien programmer web en java?
    Par lovelace dans le forum Développement Web en Java
    Réponses: 11
    Dernier message: 19/10/2008, 00h40
  3. Comment bien commencer la Programmation
    Par Le_Faya dans le forum Débuter
    Réponses: 6
    Dernier message: 01/12/2006, 18h39
  4. Comment bien programmer en C ?
    Par lastrecrue dans le forum C
    Réponses: 14
    Dernier message: 12/07/2006, 12h44

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