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 :

[POO] Conseils de développement


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [POO] Conseils de développement
    Salut!

    Je suis en train de me créer un site web. Je l'ai coder en POO.

    Pourquoi?

    La maintenance est grandement faciliter.



    Et à quoi il sert ton script?

    Et bien ce script est l'affichae général d'une page. La classe Page défini quels sont les attributs et les méthodes de chaque instance.

    Mon Script

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    <?php
    class Page {
     
    	// Atributs de la classe Page
    	public $contenu; // Tout le contenu sera entré ici
    	public $titre = "Distrotest - Articles, quizz, test et news sur Linux"; // On donne une valeur par défaut au titre
    	public $mots_cles = "distrotest, articles, quizz, test, distro, chooser, news, linux";
     
    	public $boutons = array( "Accueil" => "index.php",
    					"Articles" => "articles.php",
    					 "Quizz" => "quizz.php",
    					 "Forums" => "forums.php",
    					 "&Agrave; propos" => "apropos.php",
    					 "FAQ" => "faq.php",
    					 "Me contacter" => "contacter.php"
    				 );
     
    	// Opération sur la classe Page
    	public function __set($nom, $valeur) {
    		$this->$nom = $valeur;
    		}
     
    	public function Afficher() { // La manière dont le page sera affichée
    		echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n
    		<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n<head>\n";
    		$this->AfficherTitre();
    		$this->AfficherMotsCles();
    		$this->AfficherStyles();
    		$this->AfficherScript();
    		echo "\n</head>\n<body>";
    		$this->AfficherEntete();
    		$this->AfficherMenu($this->boutons);
    		$this->AfficherMenuGauche();
    		$this->AfficherNewsDroite();
    		echo $this->contenu;
    		$this->AfficherPied();
    		echo "\n</body>\n</html>";
    	}
     
    	public function AfficherTitre() {
    		echo "<title>" . $this->titre . "</title>\n";
    	}
     
    	public function AfficherMotsCles() {
    		echo "<meta name='keywords' content='" . $this->mots_cles . "'/>\n";
    	}
     
    	public function AfficherStyles() {
    		echo "<link href=\"styles/designPrincipale.css\" rel=\"stylesheet\" type=\"text/css\" media=\"screen\" title=\"Design de base\" />\n";
    	}
     
    	public function AfficherScript() {
    		echo '<script type="text/javascript">
    <!--
    function changeme(id, action) {
    	       if (action=="hide") {
                          document.getElementById(id).style.visibility = "hidden";
    	       } else {
    	              document.getElementById(id).style.visibility = "visible";
    	    }
    }
    -->
    	</script>';
    	}
     
    	public function AfficherEntete() {
    ?>
     
    <div id="logo">
    <!-- LOGO "CUBE + DISTRO TEST" -->
    </div>
     
    <?php
    	}
     
    	public function AfficherMenu($boutons) {
    ?>	
    	<div id="menuHaut">
    	<!-- MENU PRINCIPAL -->
     
    <br /><br /><br /><br /><br /><br />
     
    <span id="menuHautDefinition1">Retourner &agrave; la page d'accueil</span>
    <span id="menuHautDefinition2">Lire des arcticles sur Linux</span>
    <span id="menuHautDefinition3">Laissez-nous vous aider &agrave; choisir la distribution quie r&eacute;pondra &agrave; vos besoins</span>
    <span id="menuHautDefinition4">Vous &eacute;prouvez des dificult&eacute;s? Venez poser vos questions sur le forum!</span>
    <span id="menuHautDefinition5">&Agrave; propos : raisons, buts et objectifs du site...</span>
    <span id="menuHautDefinition6">Foire aux questions : questions fr&eacute;quemment pos&eacute;es</span>
    <span id="menuHautDefinition7">Questions, commentaires, renseignement? Contactez-moi!</span>
     
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
     
    <?php		
     
    		while(list($nom, $url) = each($boutons)){
    			$this->AfficherBouton($nom, $url, !$this->EstPageCourante($url));
    		}
    		echo '</div>';
    	}
     
    	public function EstPageCourante($url) { 
    		if(strpos($_SERVER['PHP_SELF'], $url) == false) {
    			return false;}
    		else {
    			return true;}
    	}
     
    	public function AfficherBouton ($nom, $url, $active = true) {
    		if($active){
    			echo '&nbsp;&nbsp;<a href="' . $url . '" onmouseover="changeme(\'menuHautDefinition' . $i . '\', \'show\');" onmouseout="changeme(\'menuHautDefinition' . $i . '\', \'hide\');">' . $nom . '</a>&nbsp;&nbsp;*';	
    		} else {
    			echo '&nbsp;&nbsp;<a href="" style="border-bottom:4px white solid" onmouseover="changeme(\'menuHautDefinition' . $i . '\', \'show\');" onmouseout="changeme(\'menuHautDefinition' . $i . '\', \'hide\');">' . $nom . '</a>&nbsp;&nbsp;*';
    	  		}
    	}
     
    	public function AfficherMenuGauche() {
    ?>
    <div id="menuGauche">
    <h4 title="Commencez-ici">Vous d&eacute;butez?</h4>
    <ul>
    	<li title="Mais qu'est-ce que Linux?"><a href="./pages/intro/intro.html">Linux?</a></li>
    	<li><a href="pages/intro/histoire.html">Histoire</a></li>
    	<li title="Laissez-nous vous aisez à choisir la distribution qui r&eacute;pondra &agrave; vos besoins"><a href="pages/quizz/quizz.html">Quizz</a></li>
     
    	<li title="Quoi consid&eacute;rer losrque l'on choisit la distribution qui r&eacute;pondra &agrave; nos besoins"><a href="pages/intro/10criteres.html">10 crit&egrave;res</a></li>
    	<li><a href="pages/intro/trucetastuces.html">Trucs et astuces</a></li>
    </ul>
     
    <h4>Distributions</h4>
    <ul>
    	<li><a href="pages/distributions/archlinux/archlinux.html">ArchLinux</a></li>
    	<li><a href="pages/distributions/debian/debian.html">Debian</a></li>
    	<li><a href="pages/distributions/fedora/fedora.html">Fedora</a></li>
    	<li><a href="pages/distributions/gentoo/gentoo.html">Gentoo</a></li>
    	<li><a href="pages/distributions/mandriva/mandriva.html">Mandriva</a></li>
    	<li><a href="pages/distributions/opensuse/opensuse.html">OpenSuSE</a></li>
    	<li><a href="pages/distributions/ubuntu/ubuntu.html">Ubuntu</a></li>
    	<li><a href="pages/distributions/slackware/slackware.html">Slackware</a></li>
    s	<li><a href="pages/distributions/distribAutres/distribautres.html">Autres</a></li>
    </ul>
     
    <h4>Environnements de Bureau</h4>
    <ul>
    <li><a href="pages/environnementDeBureau/gnome/gnome.html">Gnome</a></li>
    <li><a href="pages/environnementDeBureau/kde/kde.html">KDE</a></li>
    <li><a href="pages/environnementDeBureau/lxde/lxde.html">LXDE</a></li>
    <li><a href="pages/environnementDeBureau/xfce/xfce.html">XFCE</a></li>
    </ul>
     
    <h4>Gestionnaires de fen&ecirc;tres</h4>
    <ul>
    	<li><a href="pages/gestionnairesDeFenetres/blackbox/blackbox.html">BlackBox</a></li>
    	<li><a href="pages/gestionnairesDeFenetres/enlightenment/enlight.html">Enlightenment</a></li>
    	<li><a href="pages/gestionnairesDeFenetres/fluxbox/fluxbox.html">FluxBox</a></li>
    	<li><a href="pages/gestionnairesDeFenetres/autres/autres.html">Autres</a></li>
     
    </ul>
    </div>
     
    <?php
    }
     
    	public function AfficherNewsdroite() {
    	// instruction pour afficher une news en PHP
    	?>
    	<div id="newsDroite">
     
    <h3 title="Des nouvelles sur Linux, sur les distributions, sur le site... bref, sur tout!">Nouvelles</h3>
     
     
     
    <!-- News -> Formatage a utilisé
     
    <p class="date">**DATE**</p>
     
    <h4>**TITRE**</h4>
     
    <p>**QUOI?**</p>
     
    <p><a href="./news/news.html" class="plusinfo">Plus d'information...</a></p>
     
    <hr class="hrfin" />
     
    -->
     
     
     
    <!--News 2 -->
     
    <p class="date">Lundi, 22 juin 2009</p>
     
    <h4>Touche finale du design du projet <span class="distrotest">DistroTest</span></h4>
     
    <p>C'est aujourd'hui, le 22 juin 2009 que le design du site web <span class="distrotest">Distro Test</span></p>
     
    <p><a href="./pages/news/news.html" class="plusinfo" >Plus d'information...</a></p>
     
    <hr class="hrfin" />
     
     
     
    <!-- News 1 -->
     
    <p class="date">Samedi, 20 juin 2009</p>
     
    <h4>D&eacute;but de la construction du site <span class="distrotest">DistroTest</span></h4>
     
    <p>C'est aujourd'hui, le 20 juin 2009 que la construction du site <span class="distrotest">DistroTest</span> a commenc&eacute;! Apr&egrave;s plusieurs de "brainstormi...</p>
     
    <p><a href="./pages/news/news.html" class="plusinfo">Plus d'information...</a></p>
     
    <hr class="hrfin" />
     
     
     
    <!-- News 0 -->
     
    <p class="date">Mercredi, 17 juin 2009</p>
     
    <h4>Id&eacute;e de faire un site web</h4>
     
    <p>Aujourd'hui, mercredi 17 juin, j'ai eu l'id&eacute;e de faire un site web! Le site parlera de Linux, bien &eacute;vi...</p>
     
    <p><a href="./pages/news/news.html" class="plusinfo">Plus d'information...</a></p>
     
    <hr class="hrfin" />
     
     
     
    </div>
    <?php
    	}
    	public function AfficherPied () {
    ?>
    <div id="footer">
     
    <p>&copy; 2009 distrotest.eg2.fr. Tous droits r&eacute;serv&eacute;s  |  Questions, commentaires? <a href="mailto:justin.domingue@distrotest.eg2.fr">Contactez-moi</a></p>
     
    </div>
     
    <?php
    	}
    }
    ?>
    Cette page est inclus dans toutes mes autres pages. Voici mon index:

    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
    <?php
     
    include("page.inc.php");
     
    $page_accueil = new Page();
     
    $page_accueil->contenu = "<div id=\"contentArea\">
    	<h1>DistroTest</h1>
    		<p><b><span class=\"lettrine\">L</span>inux est un ph&eacute;nom&egrave;ne grandissant</b>. Au fur et &agrave; mesure que les jours avancent, ce syst&egrave;me d'exploitation, ou pl&ucirc;tot <a href=\"http://fr.wikipedia.org/wiki/Noyau_Linux\">ce noyau</a>
    
    			
    
    		 compl&eacute;t&eacute; par le <a href=\"http://fr.wikipedia.org/wiki/Projet_GNU\">projet GNU</a> grossit et gagne en maturit&eacute;. Des milliers de d&eacute;vellopeurs s'archarnent à rendre l'exp&eacute;rience Gnu/Linux encore plus palpitante plus les utilisateurs. je crois que c'est cela qui fait la force de ce syst&egrave;me d'op&eacute;ration!</p>
    		 <p>DistroTest est un site qui, &agrave; la base, se veut &ecirc;tre une base de donn&eacute;es sur les diff&eacute;rentes distributions Gnu/Linux. De par les arcticles surprenants, les quizz qui vous aident &agrave; choisir la bonne distribution pour vous et m&ecirc; le forum, DistroTest se distingue hautement des autres sites.</p>
    
    		 <p>Sur ce site, je tenterai de v&eacute;hicul&eacute; mes connaissances par le biais d'arcticles de toutes sortes. &Agrave; la base, <i>Distro Test</i> &eacute;tait un projet qui consistait tout simplement &agrave; <b>tester des <a href=\"http://fr.wikipedia.org/wiki/Distribution_linux\">distribution linux.</a></b></p>
    
    		 <img src=\"./images/linux/tux.png\" title=\"Tux, la mascotte de Linux\" alt=\"Tux, la mascotte de Linux\" style=\"width : 200px; height :230px;float : right;\"/>
    
    		 <p><b>Selon <a href=\"http://fr.wikipedia.org/wiki/Linux\">Wikip&eacute;dia</a>, Linux c'est</b> :</p><blockquote><p> Linux, ou GNU/Linux, est un syst&egrave;me d'exploitation compatible POSIX. Linux est bas&eacute; sur le noyau Linux, logiciel libre cr&eacute;&eacute; en 1991 par Linus Torvalds pour ordinateur compatible PC.<br />
    
    		 D&eacute;velopp&eacute; sur Internet par des milliers d'informaticiens <b>b&eacute;n&eacute;voles et salari&eacute;s</b>, Linux fonctionne maintenant sur du mat&eacute;riel allant du modem au supercalculateur. Il existe de <a href=\"http://fr.wikipedia.org/wiki/Distribution_linux\">nombreuses distributions Linux ind&eacute;pendantes</a>, destin&eacute;es aux ordinateurs personnels et serveurs informatiques, pour lesquels Linux est tr&egrave;s populaire. Elles incluent des milliers de logiciels, notamment ceux du projet GNU, d'o&ugrave; la d&eacute;nomination GNU/Linux. Linux est &eacute;galement populaire sur système embarqu&eacute;. La mascotte de Linux est le <a href=\"http://fr.wikipedia.org/wiki/Tux\">manchot Tux</a>. </p></blockquote>
    
    
    
    		 <p><b>Avec le mot Linux vient le mot Gnu. <img src=\"./images/linux/gnu.png\" title=\"La mascotte de Gnu\" style=\"float : left; width : 100px;height: 100px;\" alt=\"Mascotte de GNU\"/>Gnu, encore une fois selon <a href=\"http://fr.wikipedia.org/wiki/GNU\">Wikip&eacute;dia</a></b>, c'est :</p><blockquote><p>
    		 GNU est un projet de syst&egrave;me d'exploitation compos&eacute; exclusivement de logiciels libres. [...] Son nom est un acronyme r&eacute;cursif qui signifie en anglais &laquo; Gnu's Not Unix &raquo; (litt&eacute;ralement, &laquo; GNU n'est pas UNIX &raquo;) en r&eacute;f&eacute;rence d'une part &agrave; sa similitude ou plut&ocirc;t son accointance ou ses accointances (atomes crochus, parent&eacute;) avec UNIX et d'autre part &agrave; sa volont&eacute; d'&eacute;chapper &agrave; toute pression des &laquo; propri&eacute;taires &raquo; d'UNIX.
    
    
    		 <img src=\"./images/linux/richard_stallman.jpg\" title=\"Richard Stallman, fondateur du projet Gnu\" style=\"float : right;width :190px; height: 140px;margin-left: 5px; margin-top : 2px;\" alt=\"Richard Stallman, fondateur de GNU\"/>Au d&eacute;but de la cr&eacute;ation de GNU, le syst&egrave;me d'exploitation UNIX &eacute;tait d&eacute;j&agrave; largement r&eacute;pandu et son architecture consid&eacute;r&eacute;e comme suffisamment robuste par les universitaires et les ing&eacute;nieurs. GNU fut donc con&ccedil;u pour &ecirc;tre compatible avec ce syst&egrave;me, mais compl&egrave;tement nouveau (par l'absence de tout code source d'origine Unix), afin d'obtenir un &eacute;quivalent libre.
    
    		 GNU a &eacute;t&eacute; fond&eacute; et cr&eacute;&eacute; par Richard Stallman &agrave; la suite de son d&eacute;saccord avec les licences de Berkeley, et constituait le principal objectif de la Free Software Foundation (FSF).<br />
    
    		 Les licences GNU GPL, GNU LGPL et GNU FDL ont &eacute;t&eacute; &eacute;crites pour GNU mais font cependant partie de projets dissoci&eacute;s.
    
    		 <br />
    		 Le symbole de GNU est un gnou ; le logo a &eacute;&eacute; dessin&eacute; par &Eacute;tienne Suvasa.</p></blockquote>
    
    
    		 </div>";
     
    $page_accueil->Afficher();
    Voilà, que pensez vous de cela?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut.

    Sa dépénd.
    Sa rend quoi comme service ton code ?
    Cela t'à t'il grandement facilitée la tâche à un moment ?
    Si oui, en quel point ? Si non, en quel point ?
    Peut être à tu écris du code en prévision d'évènements futurs ?
    Quel est il, peux tu nous le montrer ?


    Autrement, oui, c'est OK, c'est syntaxiquement OK.

    a plus

  3. #3
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Je ne vois pas trop l'intérêt de ton code. C'est nettement moins lisible et je doute fort que la maintenance soit facilitée.

    De plus tu fais des traitements tout à fait inutile qui allonge le chargement de la page alors qu'au final tu n'as qu'une page HTML.

    Enfin, pourquoi réinventé la roue ? Si tu veux créer un site "orienté objet" autant utilisé un framework tel que le Zend Framework ou Symphony.

  4. #4
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Citation Envoyé par MaitreEauEau Voir le message
    Salut!
    Voilà, que pensez vous de cela?
    J'en pense que du mal

    Ton objet Page n'apporte rien de bien intéressant par rapport à un simple include qui mixerait html et php. Pire, plusieurs méthodes de Page embarquent des parties de html brut entre-coupées de <?php } ?>. Je crois qu'il n'y a pas pire

    Alors sinon, contrairement à Yoshio, je suis tout à fait pour "réinventer la roue". Si on ne réinventait pas la roue, on tournerait tous encore sous COBOL (ok, j'exagère). Si on a le temps et la motivation, y a pas mieux que de réinventer la roue pour apprendre et faire évoluer nos contemporains (qui sait ? ).

Discussions similaires

  1. Conseil pour développer une application
    Par karim15 dans le forum Delphi
    Réponses: 1
    Dernier message: 05/02/2007, 17h09
  2. [VB.NET]Conseils pré-développement
    Par BerSerK dans le forum Windows Forms
    Réponses: 7
    Dernier message: 30/08/2006, 20h35
  3. [Debutant] MultiThread et conseils de développement
    Par etiennegaloup dans le forum Débuter
    Réponses: 3
    Dernier message: 25/01/2006, 08h31
  4. [Architecture] Conseil pour développement appli Client/Serveur
    Par etiennegaloup dans le forum Développement Web en Java
    Réponses: 11
    Dernier message: 22/01/2006, 11h44
  5. conseil de développement
    Par koolkris dans le forum Débuter
    Réponses: 4
    Dernier message: 09/11/2004, 13h01

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