Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Débat] La POO dans PHP : Quelle utilité ?

Selon les version (PHP 4 ou 5)

    20 juillet 2006 à 23:38:42

    et bien continuer a faire du procedurale :lol:
    on en reparlera dans 2-3 ans :lol:
    • Partager sur Facebook
    • Partager sur Twitter
      20 juillet 2006 à 23:40:50

      On critique pas la POO, au contraire.
      On critique ton truc.
      Nuance.
      • Partager sur Facebook
      • Partager sur Twitter
        20 juillet 2006 à 23:41:27

        Ok, on vera si pour un système de news il faudra du procédural dans 2-3 ans, je serais très content de te revoir à cette époque là, tu pourra nous sortir le livre d'or en POO, l'ajout de commentaires en POO
        • Partager sur Facebook
        • Partager sur Twitter
          20 juillet 2006 à 23:46:50

          On peut même afficher la date en POO :waw: !!?


          Sephi-Chan, désolé... :ninja:


          Image utilisateur
          • Partager sur Facebook
          • Partager sur Twitter
            21 juillet 2006 à 0:04:02

            Non non, la POO c'est bien, mais dans ce genre d'utilisation, ça sert à rien, mais autrement c'est puissant
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              21 juillet 2006 à 0:24:03

              Citation : Jukien

              C'est bien ce que je pensais, tu fais de l'OO à la IPB !
              C'est du n'importe quoi : tu n'as manifestement pas compris le principe de l'héritage, ni même de l'OO d'ailleurs :-°


              J'aimerais beaucoup que tu m'écrive une classe complète et correcte, juste pour avoir un aperçu de ce que c'est. J'avoue m'être penché sur la question OO, mais pas assez pour pouvoir m'avancer dans un tel sujet.
              • Partager sur Facebook
              • Partager sur Twitter
                21 juillet 2006 à 0:42:27

                Mais alors la Poo ? MOi j'adore ca, d'ailleur j'ai fait une classe qui sert a afficher le titre de ma apge. je l'appel de cette maniere a peu près

                $title = new title(Titre);


                Il en manque un peu, mais là vous avez le début.

                J'en ai une autre qui sert a afficher une image :)

                Et sinon Design patern, ca claque nan ?

                Et puis en plus mon grand frere a une maitrise de philosophie, alors qu'il a que 25 ans !
                Et lui et bas il aime bien quand je code en Poo !!!


                Bon désolé je sors Ok

                (Spa méchant c'est pour rigoler)

                Nan sinon honnetement, je connais sephi chan, et depuis le temps qu'on en parle, on envosi toujours pas l'utilité :)
                • Partager sur Facebook
                • Partager sur Twitter
                  21 juillet 2006 à 1:27:23

                  aucune des deux méthodes (procédurale ou objet) n'est plus utile que l'autre, c'est juste deux façons de faire
                  imagine que la poo en php soit apparue en première, lorsque quelqu'un serait arrivé avec l'autre méthode on aurait pu lui dire "ça sert à quoi de faire comme ça?" - bah à rien de plus c'est juste différent :p

                  Citation : Wikipédia

                  Le MVC montre ses limites dans le cadre des applications utilisant les technologies du web (...)


                  :D
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    21 juillet 2006 à 1:29:37

                    Ce qui est impossible, vu que dans les classes, on retrouve du code procédural. :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 juillet 2006 à 1:54:15

                      Bon pour ma part j'ai un exemple de code à partager. C'est un bout du fichier noyau de mon framework. Je n'ai pas mis le code du systeme de template et du systeme de gestion de base de données mais j'ai mis le code de deux autres classes qui gèrent la configuration générale et les variables globales du site et une autre classe qui gere le systeme de membres, de sessions.

                      Vous remarquerez que ce n'est pas de la POO pure. Mais je pense que c'est un exemple assez concret d'utilisation de la POO, à un certain degré. Je n'utilise pas d'héritage ici parce que je n'en ai pas vu l'utilité. Mais en revanche, l'héritage peut avoir son utilité si on dérive vers un site spécifique à partir du framework. A la fin du code se trouve une partie en procédural, qui s'occuppe d'utiliser les classes d'avant. Ce code est le code executé avant chaque code de page (c'est un fichier inclus dans toutes les pages).

                      Voilà, j'aimerai savoir ce que vous pensez d'une telle utilisation de la POO ?



                      //
                      // configuration
                      //
                      class config
                      {
                              // constructeur
                              function config()
                              {
                                      $this->index = 'index.php';
                                      $this->server_time = time();
                                      $this->updates = array();
                                      $this->charset = 'ISO-8859-1';
                                      $this->md5_filter = 'framework';
                                      $this->cookie_name = 'framework_';
                                      $this->domain_name = '';
                                      $this->cookie_on = false;
                                      $this->use_gzip = true;
                                      $this->use_cache = true;
                                      $this->site_name = 'Framework';
                                      $this->site_desc = 'Useful Stuff !';
                                      $this->language = 'french';
                                      $this->template = 'default';
                                      $this->time_zone = 0;

                                      list($usec, $sec) = explode(' ', microtime());
                                      $this->start_microtime = doubleval($usec) + doubleval($sec);
                              }

                              // chargement de la table _config
                              function load_db()
                              {
                                      global $db;
                                     
                                      $result = $db->sql_query('SELECT * FROM ' . CONFIG_TABLE . ' LIMIT 0,1');

                                      if ( !$row = $db->sql_fetchrow($result) )
                                      {
                                              die('Could not get config');
                                      }

                                      // ajout des données de configuration
                                      foreach ( $row as $key => $val )
                                      {
                                              $this->$key = $val;
                                      }
                              }

                              // fonction pour assigner une valeur à une propriété de la configuration
                              function set($key, $val)
                              {
                                      global $db;

                                      if ( $this->$key != $val )
                                      {
                                              $this->$key = $val;
                                      }

                                      if ( is_numeric($val) )
                                      {
                                              $this->updates[$key] = $key . ' = ' . $val;
                                      }
                                      elseif ( is_array($val) || is_object($val) )
                                      {
                                              $this->updates[$key] = $key . ' = \'' . quotes(serialize($val)) . '\'';
                                      }
                                      else
                                      {
                                              $this->updates[$key] = $key . ' = \'' . quotes($val) . '\'';
                                      }
                              }

                              // mise à jour de la table _config
                              function update_db()
                              {
                                      global $db;

                                      if ( count($this->updates) > 0 )
                                      {
                                              $db->sql_query('UPDATE ' . CONFIG_TABLE . ' SET ' . implode(', ', $this->updates));
                                      }

                                      $this->updates = array();
                              }
                      }

                      //
                      // utilisateur
                      //
                      class user
                      {
                              // constructeur
                              function user($user_id = 0)
                              {
                                      global $db, $config, $template;

                                      $user_id = intval($user_id);

                                      //
                                      // session utilisateur
                                      //
                                      if ( !defined('SESSION_STARTED') || !empty($user_id) )
                                      {
                                              if ( !defined('SESSION_STARTED') )
                                              {
                                                      $this->is_search_engine = false;

                                                      foreach ( array('googlebot', 'crawler', 'slurp', 'fast', 'ia_archiver', 'scooter', 'robot', 'voilabot', 'w3c', 'zyborg', 'deepindex', 'xecho') as $engine )
                                                      {
                                                              if ( stripos($_SERVER['HTTP_USER_AGENT'], $engine) !== false )
                                                              {
                                                                      $this->is_search_engine = true;
                                                              }
                                                      }

                                                      if ( !$this->is_search_engine )
                                                      {
                                                              session_start(); // début de la session
                                                      }

                                                      if ( empty($_SESSION['user_id']) && ( !$config->cookie_on || empty($_COOKIE[$config->cookie_name . 'user_remember']) ) )
                                                      {
                                                              $user_id = 0;
                                                      }
                                                      elseif ( empty($_SESSION['user_id']) )
                                                      {

                                                              if ( preg_match('`^([1-9][0-9]*):([0-9a-f]{32})$`', $_COOKIE[$config->cookie_name . 'user_remember'], $matches) && md5($config->md5_filter . $matches[1]) == $matches[2] )
                                                              {
                                                                      $user_id = intval($matches[1]);
                                                                      setcookie($config->cookie_name . 'user_remember', $matches[0], $config->server_time + 315360000, '/', '.' . $config->domain_name);
                                                              }
                                                              else
                                                              {
                                                                      $user_id = 0;
                                                              }
                                                      }
                                                      else
                                                      {
                                                              $user_id = intval($_SESSION['user_id']);
                                                      }
                                              }

                                              $result = $db->sql_query('SELECT u.* FROM ' . USERS_TABLE . ' u WHERE ( u.id = ' . $user_id . ' OR u.id = 0 ) ORDER BY u.id DESC LIMIT 1');

                                              $this->updates = array();

                                              if ( !$row = $db->sql_fetchrow($result) )
                                              {
                                                      die('Could not get user data');
                                              }

                                              foreach ( $row as $key => $val )
                                              {
                                                      $this->$key = $val;
                                              }

                                              if ( !defined('SESSION_STARTED') )
                                              {
                                                      $_SESSION['user_id'] = $this->id;
                                              }

                                              // l'utilisateur n'est pas un invité, on définit alors toutes les propriétés qui lui sont nécessaire
                                              if ( $this->id > 0 )
                                              {
                                                      $this->logged_in = true;
                                                      $this->admin = ( $this->admin == 1 ) ? true : false;

                                                      // forum
                                                      /*if ( $this->forum_messages == '' )
                                                      {
                                                              $this->set('forum_messages', $config->forum_messages);
                                                      }*/


                                                      // updating the last visit
                                                      if ( !defined('SESSION_STARTED') )
                                                      {
                                                              $this->set('last_visit', $config->server_time);
                                                             
                                                              if ( !$this->is_search_engine )
                                                              {
                                                                      if ( $this->session_id != session_id() )
                                                                      {
                                                                              $this->set('session_id', session_id());
                                                                      }
                                                              }

                                                              $template->assign_block_vars('logged_in', array());

                                                              if ( $this->admin )
                                                              {
                                                                      $template->assign_block_vars('admin', array());
                                                              }

                                                              // chat
                                                              /*if ( defined('ON_CHAT') && !$this->on_chat )
                                                              {
                                                                      $this->set('on_chat', 1);
                                                              }
                                                              elseif ( !defined('ON_CHAT') && !defined('HIDDEN_SCRIPT') && $this->on_chat )
                                                              {
                                                                      $this->set('on_chat', 0);
                                                              }*/

                                                      }
                                              }
                                              else
                                              {
                                                      $this->logged_in = false;
                                                      $this->admin = false;
                                                      $this->name = 'Invité';
                                                      $this->session_id = session_id();

                                                      if ( !defined('SESSION_STARTED') )
                                                      {
                                                              $template->assign_block_vars('logged_out', array());
                                                      }
                                              }

                                              if ( !defined('SESSION_STARTED') )
                                              {
                                                      define('SESSION_STARTED', true);
                                              }
                                      }
                                      else
                                      {
                                              message_die('Erreur', 'User data error');
                                      }

                              }

                              // fonction pour assigner une valeur à une propriété de l'utilisateur
                              function set($key, $val)
                              {
                                      if ( !$this->logged_in )
                                      {
                                              return false;
                                      }

                                      if ( $this->$key != $val )
                                      {
                                              $this->$key = $val;
                                      }

                                      if ( is_numeric($val) )
                                      {
                                              $this->updates[$key] = $key . ' = ' . $val;
                                      }
                                      elseif ( is_array($val) || is_object($val) )
                                      {
                                              $this->updates[$key] = $key . ' = \'' . quotes(serialize($val)) . '\'';
                                      }
                                      else
                                      {
                                              $this->updates[$key] = $key . ' = \'' . quotes($val) . '\'';
                                      }
                              }

                              function update_db($force_update = false)
                              {
                                      if ( !$this->logged_in )
                                      {
                                              return false;
                                      }

                                      global $db;

                                      if ( count($this->updates) > 0 )
                                      {
                                              $db->sql_query('UPDATE ' . USERS_TABLE . ' SET ' . implode(', ', $this->updates) . ' WHERE id = ' . $this->id);
                                      }

                                      $this->updates = array();
                              }

                              function logout()
                              {
                                      global $config;

                                      if ( !$this->logged_in )
                                      {
                                              return false;
                                      }

                                      if ( $config->cookie_on && !empty($_COOKIE[$config->cookie_name . 'user_remember']) )
                                      {
                                              setcookie($config->cookie_name . 'user_remember', 0, 1, '/', '.' . $config->domain_name);
                                      }

                                      $_SESSION['user_id'] = 0;
                                      return true;
                              }

                              function login()
                              {
                                      if ( $this->logged_in )
                                      {
                                              return false;
                                      }

                                      global $db, $config;

                                      if ( !empty($_POST['name']) && isset($_POST['password']) )
                                      {
                                              $result = $db->sql_query('SELECT id FROM ' . USERS_TABLE . ' WHERE name = \'' . quotes(htmlspecialchars(trim($_POST['name']))) . '\' AND password = \'' . md5(trim($_POST['password'])) . '\' AND id > 0 AND active = 1 LIMIT 0,1');

                                              if ( $row = $db->sql_fetchrow($result) ) // successful
                                              {
                                                      $_SESSION['user_id'] = $row['id'];
                                                      $db->sql_query('UPDATE ' . USERS_TABLE . ' SET session_id = \'' . $this->session_id . '\' WHERE id = ' . $row['id']);

                                                      if ( $config->cookie_on && !empty($_POST['remember']) )
                                                      {
                                                              setcookie($config->cookie_name . 'user_remember', $row['id'] . ':' . md5($config->md5_filter . $row['id']), $config->server_time + 315360000, '/', '.' . $config->domain_name);
                                                      }

                                                      return true;
                                              }
                                      }

                                      // failed
                                      return false;
                              }
                      }

                      //
                      // template (dérivé du système de template de phpBB, qui est lui-même un dérivé de phplib)
                      //
                      class template
                      {
                              /* CODE CLASSE TEMPLATE */
                      }

                      //
                      // base de données
                      //
                      class sql_db
                      {
                              /* CODE CLASSE SQL_DB */
                      }

                      //
                      // start !
                      //

                      if ( !defined('IN_SCRIPT') )
                      {
                              exit_script();
                      }

                      if ( !defined('PASSIVE_MODE') )
                      {
                              require('./includes/essential.php');

                              // constants
                              define('CONFIG_TABLE', $essential['table_prefix'] . 'config');
                              define('USERS_TABLE', $essential['table_prefix'] . 'users');

                              // init config
                              $config = new config;

                              // database connection
                              $db = new sql_db($essential['db_host'], $essential['db_user'], $essential['db_password'], $essential['db_name'], false);

                              // get config
                              $config->load_db();

                              if ( $config->use_gzip ) // compression gzip activée
                              {
                                      ob_start('ob_gzhandler');
                              }

                              ob_start('ob_end_script');

                              // security : we delete database infos
                              unset($essential);

                              // language
                              require('./language/' . $config->language . '.php');

                              // template
                              $template = new template;
                              $user = new user;

                              $template->assign_vars(array(
                                      'TEMPLATE_PATH' => 'templates/' . $config->template . '/',
                                      'DIRECTION' => 'ltr',
                                      'ENCODING' => $config->charset,
                                      'SITE_NAME' => $config->site_name,
                                      'SITE_DESC' => $config->site_desc,
                                      'PAGE_NAME' => (( !empty($page_name) ) ? trim($page_name) : 'Sans titre'),
                                      'USER_NAME' => $user->name
                                      ));
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 juillet 2006 à 4:31:57

                        Citation : Metzgermeister

                        Ce qui est impossible, vu que dans les classes, on retrouve du code procédural. :)


                        d'où la nécessité de faire preuve d'imagination :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 juillet 2006 à 4:34:02

                          Bah disons que tu as trois classes prévues pour n'avoir qu'une seule instance ( du moins à première vue ... ), et que là n'est pas l'esprit de la POO selon moi ...

                          La POO dans un jeu PHP ce serait plutôt une classe CEntity qui contient une propriété position qui contient une instance de la classe CPoint. CEntity pourrait alors être dérivée en CMonster, CPlayer, CCamera, etc ...

                          Dans ton exemple, la classe simplifie peut être un peu le code mais ne montre pas le vrai rôle de la POO ( toujours selon moi, je m'entends ... )
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 juillet 2006 à 9:34:35

                            Citation : feepeter

                            :lol: non non mon patron est tres content de mon taff :D je vous est pas montré du code en production de toute fasson j'aurait pas le droit :p


                            Donnes le nom de ta boîte, de ton patron, son site internet, des références...

                            Citation : feepeter


                            Et pi puis moi je vous impose rien je voulais juste vous montré un fasson de structuré son code ... mais si sa vous interresse pas arreter de criticé sans vous renseigner au préalable ... tapper design pattern mvc dans google et essayer de regarder les docs la dessus avant de dire que c'est inutil et compliqué ...


                            Te structurer, structurer son code... bah merde, faut le dire vite pour pas qu'on comprenne alors !
                            Tu te fout de nous là ? ^^

                            Citation : feepeter


                            mais c'est vrais que le php est un langage bien pour les newbies qui veulent pas se casser le crane a reflechir a l'architecture d'un programme et encore je vous parle pas d'analyse ou d'uml mon dieu...


                            Ah nous y voilà !
                            Mossieur est un programmeur et le php est le langage des petits merdeux.
                            Mais pourquoi t'en fait alors, tourne-toi vers Java ou Python où tu auras l'occasion de te structuré encore et encore.

                            Citation : feepeter


                            quant a mon patron il est diplomé de l'epita et y donne des cours alors qu'il a moin de 25ans et est chef d'entreprise (la meme qui a fait le nouveau site d'oleane hebergement bizarement ...).


                            Mais on s'en fout qu'il soit diplômé ou pas ?
                            J'en connais des diplômés plus con que mes pieds.
                            Ne me dis-pas que ton boss diplômé à une culture POO qui ressemble à ton truc ????
                            Ne me dis qu'il donne des cours de "ça"

                            Citation : feepeter


                            Sur se je vais arreter de m'etandre sur le sujet de la poo ici a moins que certain ont des questions plus objective


                            Des questions objectives ?
                            Mais bon dieu on n'arrête pas de te demander de nous convaincre de la réalité du besoin de ton application.

                            Citation : feepeter


                            tout en etant concient que le code que j'ai produit est loin d'etre parfait :colere2:


                            Oui !
                            Mais entre loin d'être parfait et parfaitement inutile, il y a quand même un large fossé !

                            Enfin bon, si Stephi-Chan ne devait retenir qu'une seule chose de son topic, ce serait :
                            - l'exemple à ne surtout pas suivre.

                            Citation : blendor

                            Oui, la POO a des avantages, elle offre une vision à long terme.


                            Oui !
                            Mais tu la voit où la vision à long terme sur son truc de news là ?
                            Si je dois payer un mec pour coder cette horreur simplement pour que mon client ai une vision à long terme, je suis obliger de recalculer son prix en l'augmentant de 200%.
                            Bordel, je code des petits sites en trois jours.
                            J'ai des modules de code procédural qui me demande quelques heures pour être mis en place dans un nouveau site.(une admin par exemple)
                            Rien que pour mettre en place sa structure j'en ai pour 8 jours. :-°

                            Enfin bref !
                            Si c'est ça la POO, je terminerai ma carrière en procédural :-°

                            =============================================================

                            Citation : De moi

                            Ouais on le sait Papy, t'es qu'un vieux con ! :-°:p

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 juillet 2006 à 9:52:27

                              Merci quand même d'avoir participé, et je tiens à applaudir le courrage de Feepeter qui a tenu malgré tout ce qu'il a pris dans la g..... Et merci aux autres aussi :).


                              Sephi-Chan
                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 juillet 2006 à 10:00:54

                                Une derniere chose. Je ne vais repeter ici que ce qu'on m'a dit, enfin essayer de retranscrire.


                                Les classes, en C++ par exemple, n'aurait elle pas une utilité de "portabilité" entre libraire ou bibliotheques ?

                                Je faisait un convertisseur decimal --> Binaire et au debut c'était en mode console...
                                Puis un ami m'a dit de le faire sosu forme de classe, comme ca il me ferait une interface avec la SDL et je n'aurais qu'a appeler la classe pour le traitement.


                                Je dit ca vraiment avec une retenue, car je ne suis pas sur, corrigez moi surtout si il le faut, je n'aimerais pas rester sur une idée fausse !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  21 juillet 2006 à 10:06:03

                                  Citation : Sephi-Chan

                                  Merci quand même d'avoir participé, et je tiens à applaudir le courrage de Feepeter qui a tenu malgré tout ce qu'il a pris dans la g..... Et merci aux autres aussi :).


                                  Sephi-Chan


                                  Ah mais je n'enlèves rien à la tenacité de feepeter, loin de là.
                                  Le seul reproche que je peux lui faire, c'est d'essayer de faire passer une vision pas très, comment dire, "académique" ou plutôt pas très réaliste de ce qu'est la POO.

                                  Perso, je retiens une chose :
                                  Bien que des énormes progrès ont été sur la partie POO, PHP reste, et restera, un langage procédural simple. Si la POO est un but en soi, on passe à un autre langage que PHP.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    21 juillet 2006 à 10:45:00

                                    Citation : bluestorm

                                    <citation>
                                    ...

                                    Python pour le web


                                    Les chapitres 11, 12 et 13 de la "Python Library Reference" sont dédiés au réseau, et ils sont biens plus comlets que les fonctions PHP :

                                    Chapitre 11


                                    • scripts cgi
                                    • manipulation d'urls
                                    • clients ftp, http, mail (pop, imap, smtp), telent
                                    • serveurs socket, http, http+cgi
                                    • coockies
                                    • xml-rpc
                                    • chat (communication asyncrone)



                                    Chapitre 12


                                    • type mime
                                    • encodage
                                    • parsing de mails, boites mails
                                    • encodage/décodage de tout un tas de protocoles
                                    • manipulation de robots.txt
                                    • fichiers CSV



                                    Chapitre 13


                                    • parseur html
                                    • parseur sgml
                                    • xml : expat (manipulation à la volée)
                                    • xml : dom
                                    • xml : sax
                                    • parseur xml générique



                                    Déja, ça explose PHP sous toutes les coutures. Et ce n'est que la librairie standard.

                                    ...



                                    Regarde bien la documentation Php et ce qu'elle propose, tu as exactement la même chose voir plus par contre chose j'admet que c'est un peu le bordel quand on passe pas sa vie sur le manuel.

                                    Pour en revenir au sujet initial, la POO (et notamment celle de Php5 qui fait la différence (entre autre pour la possibilitée de pouvoir désigner des visibilités et des exceptions)) a pour gros avantage de structurer de façon logique (tu n'es pas obligé de faire de la Poo pour structurer de façon logique mais ca aide), par contre ca demande un effort supplémentaire au départ pour penser à son application, ce que ca va impliquer, ce dont on aura et pourra avoir besoin, ect ...
                                    Par contre au final, même si tu met plus de temps au début, par la suite tu y gagne très largement (si tu as bien fais ton boulot) de pars la facilitée de programmation que ca entraîne, un gain de temps pour la maintenance, ect ...

                                    Bref la POO c'est très bien par contre je vais mettre un bémol, il ne faut pas en abuser, certaines parties de ton application ne nécessiteront pas de travailler sur un objet et dans ce cas il est plus intelligent d'utiliser une fonction.

                                    Je dirais donc que si ton projet commence à avoir de l'envergure, mieux vaut le penser en Poo.

                                    Ph4 et la poo :
                                    - lourd à utiliser
                                    - gruyère niveau sécurité
                                    - lourd à programmer et à lire (vive les références dans tous les sens)
                                    - ...

                                    Php5 et la poo :
                                    - structuré
                                    - visibilitée des méthodes et des variables
                                    - système d'exception (pour gérer les erreurs)
                                    - fonctions magiques
                                    - système d'interface permettant une énorme souplesse
                                    - par défaut tout est fait par référence donc le code s'en trouve plus lisible et moins dur à coder (par contre du coup on est obligé de faire des copies d'un objet pour travailler dessus si on veux pas influer celui d'origine)

                                    J'espère que ca te suffira à te faire ton idée.

                                    Edit :
                                    Php n'a rien d'un langage de newbies. Le problème c'est pas la langage en lui-même, c'est les personnes qui l'utilisent. Tu peux énormément de chose avec et très rapidement, le tout étant de prendre le temps d'y réfléchir.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 juillet 2006 à 19:35:56

                                      Citation : Shepard

                                      Bah disons que tu as trois classes prévues pour n'avoir qu'une seule instance ( du moins à première vue ... ), et que là n'est pas l'esprit de la POO selon moi ...

                                      La POO dans un jeu PHP ce serait plutôt une classe CEntity qui contient une propriété position qui contient une instance de la classe CPoint. CEntity pourrait alors être dérivée en CMonster, CPlayer, CCamera, etc ...

                                      Dans ton exemple, la classe simplifie peut être un peu le code mais ne montre pas le vrai rôle de la POO ( toujours selon moi, je m'entends ... )



                                      Oui c'est sur, je ne pense pas que ça soit le but principal de la POO, mais c'est quand même une utilisation possible. Dans le cas de mon framework, je n'ai pas trouvé d'intérêt à faire une classe parente de toutes les autres avec des héritages etc...
                                      Peut-être qu'il y a un intérêt, mais alors je ne l'ai pas trouvé :o

                                      Mais en tout cas, dans le cadre d'un jeu, c'est sur que je vois déjà quelques utilités, mais c'est encore flou, je pense qu'il faut que je me penche plus sur la question pour avoir plus de recul. Et que je pratique plus ces héritages de classe... bref je vais pas m'étaler plus dans le risque de dire des bétises.

                                      Mais merci de la remarque en tout cas.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        22 juillet 2006 à 8:56:34

                                        Je vous préviens, quand je reviens de vacances je viens tirer des oreilles.

                                        En particulier

                                        Citation

                                        Php n'a rien d'un langage de newbies. Le problème c'est pas la langage en lui-même, c'est les personnes qui l'utilisent.

                                        blah blah blah blablablabla blah
                                        (ça commence par ici : http://www.bitstorm.org/edwin/en/php/ )
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        [Débat] La POO dans PHP : Quelle utilité ?

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown