[ CLASSE ] GÉNÉRER LA STRUCTURE D'UNE PAGE WEB À L'AIDE D'UNE CLASSE
Epoc22
Messages postés198Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention14 novembre 2008
-
14 mars 2007 à 11:48
cs_zeguizmo
Messages postés138Date d'inscriptionvendredi 1 août 2003StatutMembreDernière intervention16 juillet 2009
-
19 sept. 2007 à 13:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 14 mars 2007 à 19:39
Après lecture rapide du code, je trouve que la construction de page via ton systeme est galère.
par exemple : contenu du body
$a->h1('toto') ;
echo $a->h1 ;
$a->h2('toto') ;
echo $a->h2 ;
$a->h2('toto') ;
echo $a->h2 ;
=> c'est pas pratique, je trouve.
tu pourrais améliorer en faisant une gestion de toutes les balises avec une gestion de la descendance de balise.
permettre la gestion des classes et des id de tes elements(balises) HTML/(x)HTML.
permettre la possibilité d'ajouter des scripts JS externes.
etc.
Ca permettrai de t'amuser avec les interfaces/ classes abstraites (PHP5) au niveau de la gestion des elements.
BreakingCentral
Messages postés11Date d'inscriptionmercredi 14 mars 2007StatutMembreDernière intervention 9 avril 2007 14 mars 2007 à 13:57
Ok merci pour ta réponse, je vais voir ça.
Mais là, c'est l'heure d'aller râter les partiels, alors à plus ! xD
@+
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 14 mars 2007 à 13:23
>> $this->title = "<title>$title</title>";
A remplacer par : $this->title = '<title>'. $title .'</title>'."\n";
>> ouais mais les tableaux imbriqués comme ça les uns dans les autres, je trouve pas ça terrible... Ca alourdit plus qu'autre chose à mon avis...
Ah nan pas du tout ! C'est surtout plus propre de fonctionner avec les tableaux car tu sépares les données que tu enregistres de leur "mise en forme". Dans ta classe, tu places les données directement entre les balises. Il faudrait le faire complètement à la fin ça. Il existe plein de fonction pour manipuler les tableaux en plus donc c'est très pratique. Dans ton cas, il faudrait traiter des chaînes de caractères... et c'est bien plus galère. Avec un tableau tu peux plus facilement compter les éléments. Par exemple, vérifier que tu n'as qu'une seule et unique balise <title>, <meta description>, <meta keywords> ...
>> Et je sais pas trop comment on fait une classe en PHP 5 (quels sont les changements ?) ^^
- Une classe PHP5 a un constructeur, un destructeur, des attributs avec une visibilité (private, public, protected...). La syntaxe PHP5 se rapproche sensiblement de celle de Java.
Tu as tout ici pour refaire ta classe correctement. Je te conseille aussi de télécharger ma classe Atom Generator (présente sur ce site et que je dois mettre à jour d'ailleurs lol) et de t'en inspirer pour refaire ta classe.
++
BreakingCentral
Messages postés11Date d'inscriptionmercredi 14 mars 2007StatutMembreDernière intervention 9 avril 2007 14 mars 2007 à 13:09
Au fait, là où j'ai mis des guillemets, j'étais obligé sinon ça ne marchait pas. Et je sais pas trop comment on fait une classe en PHP 5 (quels sont les changements ?) ^^
<? @+ ?>
BreakingCentral
Messages postés11Date d'inscriptionmercredi 14 mars 2007StatutMembreDernière intervention 9 avril 2007 14 mars 2007 à 13:02
@Epoc22: oui j'ai mis ces balises.
@webdeb: ouais mais les tableaux imbriqués comme ça les uns dans les autres, je trouve pas ça terrible... Ca alourdit plus qu'autre chose à mon avis...
+++
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 14 mars 2007 à 12:44
1/ Pourquoi ne pas avoir fait une véritable classe PHP5 ?
2/ Utilise des apostrophes plutôt que des guillemets pour tes chaînes de caractères statiques
3/ Un tableau a plusieurs dimensions représentant la hierarchie des balises d'une page web aurait été meilleur qu'une multitude de variables dans lesquelles tu concatènes les chaînes HTML. Exemple :
Epoc22
Messages postés198Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention14 novembre 20081 14 mars 2007 à 11:48
J'ai juste survolé le code mais il a l'aire intéressant, avec quelques ajouts et améliorations...
Est ce que tu a mit les balise META pour la description, les mots clé, l'auteur, le copyright... ?
19 sept. 2007 à 13:34
20 mars 2007 à 04:31
16 mars 2007 à 21:18
16 mars 2007 à 20:13
$doc = new html;
$head = $doc->NouvelleBalise('head');
$title = $doc->NouvelleBalise('title');
$title->content = 'Un titre';
$head->Ajoute($title);
$meta = $doc->NouvelleBalise('meta');
$meta->key = 'content';
$meta->value = '.....';
$head->Ajoute($meta);
$script = $doc->NouvelleBalise('jscript');
$script->version = '1.1';
$script->content = 'function().....';
$head->Ajoute($script);
$doc->Ajoute($head);
//etc...
Ca ferait un truc dans le genre :
class html {
static private $content;
public function Ajoute( MainElement $obj );
public function NouvelleBalise( $objname );
public function ToXML();
public function ToHTML();
}
class MainElement {
protected $content;
public function Ajoute( ChildElement $obj );
}
class ChildElement {
protected $content
public function __construct();
public function Ajoute( ChildElement $obj );
}
// Eventuellement, si on a besoin de plus niveau balise :
class meta extends ChildElement {
protected $key;
protected $value;
//
}
etc...
14 mars 2007 à 19:49
$doc = new html;
$head = $doc->nouvelle_balise('head');
$head->SetTitle('.......');
$head->addCSS('lien.css', 'autrelien.css', 'encoreun.css');
$head->addMeta('content', '.....');
$head->addMeta('truc', 'machin');
$head->AddJscript('function().....');
$doc->AppendChild($head);
$body = $doc->nouvelle_balise('head');
$body->AddTitle('Mon titre', 4);
$doc->AppendChild($body);
$doc->GenerateHTML();
echo $doc;
Bref, un peu comme XML quoi :)
14 mars 2007 à 19:39
par exemple : contenu du body
$a->h1('toto') ;
echo $a->h1 ;
$a->h2('toto') ;
echo $a->h2 ;
$a->h2('toto') ;
echo $a->h2 ;
=> c'est pas pratique, je trouve.
tu pourrais améliorer en faisant une gestion de toutes les balises avec une gestion de la descendance de balise.
permettre la gestion des classes et des id de tes elements(balises) HTML/(x)HTML.
permettre la possibilité d'ajouter des scripts JS externes.
etc.
Ca permettrai de t'amuser avec les interfaces/ classes abstraites (PHP5) au niveau de la gestion des elements.
14 mars 2007 à 13:57
Mais là, c'est l'heure d'aller râter les partiels, alors à plus ! xD
@+
14 mars 2007 à 13:23
A remplacer par : $this->title = '<title>'. $title .'</title>'."\n";
>> ouais mais les tableaux imbriqués comme ça les uns dans les autres, je trouve pas ça terrible... Ca alourdit plus qu'autre chose à mon avis...
Ah nan pas du tout ! C'est surtout plus propre de fonctionner avec les tableaux car tu sépares les données que tu enregistres de leur "mise en forme". Dans ta classe, tu places les données directement entre les balises. Il faudrait le faire complètement à la fin ça. Il existe plein de fonction pour manipuler les tableaux en plus donc c'est très pratique. Dans ton cas, il faudrait traiter des chaînes de caractères... et c'est bien plus galère. Avec un tableau tu peux plus facilement compter les éléments. Par exemple, vérifier que tu n'as qu'une seule et unique balise <title>, <meta description>, <meta keywords> ...
>> Et je sais pas trop comment on fait une classe en PHP 5 (quels sont les changements ?) ^^
- Une classe PHP5 a un constructeur, un destructeur, des attributs avec une visibilité (private, public, protected...). La syntaxe PHP5 se rapproche sensiblement de celle de Java.
Pour plus d'info : http://fr.php.net/manual/fr/language.oop5.php
Tu as tout ici pour refaire ta classe correctement. Je te conseille aussi de télécharger ma classe Atom Generator (présente sur ce site et que je dois mettre à jour d'ailleurs lol) et de t'en inspirer pour refaire ta classe.
++
14 mars 2007 à 13:09
<? @+ ?>
14 mars 2007 à 13:02
@webdeb: ouais mais les tableaux imbriqués comme ça les uns dans les autres, je trouve pas ça terrible... Ca alourdit plus qu'autre chose à mon avis...
+++
14 mars 2007 à 12:44
2/ Utilise des apostrophes plutôt que des guillemets pour tes chaînes de caractères statiques
3/ Un tableau a plusieurs dimensions représentant la hierarchie des balises d'une page web aurait été meilleur qu'une multitude de variables dans lesquelles tu concatènes les chaînes HTML. Exemple :
<?php
$arrayPage = array(
'head' => array
(
'title' => 'Ton titre',
'description' => 'Ta description',
'keywords' => 'Tes keywords',
'link' => array
(
array('rel' => 'stylesheet', 'href'=>'styles_web.css', 'media' => 'screen', 'type' => 'text/css'),
array('rel' => 'stylesheet', 'href'=>'styles_print.css', 'media' => 'print', 'type' => 'text/css')
);
),
'body' => array(...)
);
?>
++
14 mars 2007 à 11:48
Est ce que tu a mit les balise META pour la description, les mots clé, l'auteur, le copyright... ?