GenH.php

Un petit framework pour générer de l'HTML proprement en PHP

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour :)

J'ai crée un micro-framework qui permet de générer de l'HTML en PHP, en orienté objet. Auriez vous des retours à me faire sur le code, ou sur le fonctionnement ?
C'est open source, voici le lien du dépot Github : https://github.com/Drulac/GenH.php

Merci d'avance !

Édité par Drulac

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+1 -0
Auteur du sujet

J'ai pas regardé le code, mais peux-tu expliquer le but/l'utilité du projet ?

victor

le but est de m'exercer à la programmation OO, et de me créer un petit framework.

Par exemple, pourquoi ça et pas un moteur de template ?

victor

Je ne sais pas, ce n'est pas fait pour remplacer un moteur de template, c'est juste une base.

Pourquoi indenter l'HTML ?

victor

Pour faire beau :D

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+1 -0

Salut !

Comme ce projet ressemble plus à un exercice qu'a un projet avec un but réel, voilà des points à approfondir pour progresser dans la POO en PHP :

  1. Des groupes d'utilisateurs ont créés des standards de formatage et de nommage. Le groupe le plus connu, PHP-FIG, liste ses recommandations dans les PSR-1 et PSR-2. Ces standards sont de très loin les plus utilisées et si tu veux participer à du open-source, je te les recommande. Les textes peuvent sembler chiant, mais il faut que tu les lises. Si tu as du mal, il y a un outil fait pour ça : PHP_CodeSniffer. Parmi ces recommandations :
    1. Les fichiers DEVRAIENT soit déclarer des symboles (classes, fonctions, constantes, etc.) soit causer des effets secondaires (par exemple, générer des sorties, modifier paramètres .ini), mais NE DOIVENT PAS faire les deux.
    2. Les noms des classes DOIVENT être déclarés comme StudlyCaps.
    3. Les noms des méthodes DOIVENT être déclarés comme camelCase.
    4. Le code DOIT utiliser 4 espaces pour l'indentation et aucune tabulation.
  2. Le même groupe a aussi réalisé une PSR sur l'autoloading (PSR-4). Je te laisse les recommandations.
  3. La norme est d'utiliser Composer pour l'autoloading. Ça permet d'utiliser très facilement des librairies tiers et Composer gère l'autoloading (en suivant les PSR-4) comme un grand.
  4. Enfin, la clé pour une bonne librairie, c'est une bonne documentation (et une installation simple, mais ça, c'est Composer s'en occupe).

Ne prend pas ce message comme une critique, mais comme une marche pour aller plus loin dans la POO ! :)

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0
Auteur du sujet

J'ai essayé de suivre au mieux la norme PSR1. Dans le validateur, je n'ai plus que 6 erreurs car j'ai plusieurs classes dans le même fichier.

Ligne Erreur
142 Each class must be in a file by itself
142 Each class must be in a file by itself
156 Each class must be in a file by itself
183 Each class must be in a file by itself
200 Each class must be in a file by itself
217 Each class must be in a file by itself
234 Each class must be in a file by itself

J'ai également commencé à rédiger une partie de la documentation, dans le readme : https://github.com/Drulac/GenH.php/blob/master/README.md
Est-ce bien comme manière de rédiger une doc ?

PS : Vous pouvez aussi me corriger pour mauvais anglais si vous voyez une grosse tâche ;)

Édité par Drulac

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+2 -0
Auteur du sujet

Bonsoir :)

Le code a été mis à jour. J'ai pas mal débogué, il n'y a plus de bug connu. J'ai également rédigé la doc en français, et je l'ai aussi traduite en anglais. J'ai également mis un exemple de code. Que pensez vous de la documentation ? (signalez moi les fautes si vous en voyez, je suis sur qu'il y en a encore :D )

Édité par Drulac

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0

Bonjour,

Tes classes pour tes balises sont un peu étranges. Elles ressemblent toutes à ça :

1
2
3
4
5
6
7
8
class Em extends Container
    {
        public function getCode($view)
        {
            $this->setAttribut('em');
            return $this->code($view);
        }
    }

Plutôt que de créer une classe par balise HTML, pourquoi ne pas utiliser la classe container prenant un paramètre attribut dès son initialisation ?

ThuleMalta - C#, PHP, Python/Django, Unity3D. mon blog

+0 -0
Auteur du sujet

C'est un choix personnel, pour la lisibilité. J'avais fait comme ça au début, mais c'est moins bien lisible, surtout avec la coloration syntaxique. Je réfléchi à une méthode pour réduire le contenu de ces classes, voir qu'elles soit mêmes vides.

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Auteur du sujet

J'ai réussi, ça a permis d'enlever environ 200 lignes de code répétitif, les class étant là pour le figuratif, leur contenu est maintenant totalement vide :)

1
class Li extends Container{}

Bonjour coupain. Va voir mon Blog, et dit moi par mp ce que tu en pense

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte