CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Avis][Début de projet] Un nouveau script de forum

DébutPage précedente
1
Page suivantePage suivante
DCeno DCeno
MP
Niveau 10
21 octobre 2016 à 10:28:35

Salut à tous,

J'ai commencé à développé mon propre script de forum (style phpBB, IPB, ...), et j'aurais voulu quelques avis sur mon code de base (après tout, je l'ai mis en accès publique et licence MIT sur Github) :

https://github.com/DarkCenobyte/materialif

Ma base: Pas de framework, du PHP7, juste Eloquent (l'ORM de Laravel), Smarty3 pour les templates, et Composer pour déjà ces dépendances, mais aussi pour faire l'autoloader PSR-4 de mes classes. Et côté Front-end, j'utilise MaterializeCSS. (qui donne déjà un jolie résultat je trouve pour mon script d'installation et mon début de panel d'admin)

(Ah, et avant de me dire que c'est sans intérêt ou d'utiliser un framework, mon premier objectif était de m'améliorer en PHP, et surtout en ce qui concerne les namespace, ... Au-delà de ça, j'ai lu que souvent un framework avait tendance à être plus lent à l'exécution qu'un PHP sans framework, et je me suis dit que je pourrais peut-être tenter de me faire une base solide ne remplissant que mes besoins... Au pire, ça m'aide à m'améliorer en PHP sur des domaines qui me sont utiles, au mieux, c'est génial et ça marche)

Pour l'instant ce qu'il y a :
- Un script d'installation (qui ne détruit pas pour l'instant le dossier install/ mais je prévois ça pour plus tard, quand je n'aurais plus trop à revenir dessus dans mon code, puis c'est plus pratique de le laisser tant que je bosse avec git et que je peux revenir dessus).
- Un système d'URL rewriting activable dans un fichier de conf (fonctionnel sous Apache avec .htaccess et URL_Rewrite, même si le gros du truc est fait en PHP, pour être plus facilement portable après ailleurs)
- Un panel d'administration pour l'admin crée lors de l'installation, qui permet de créer/éditer/supprimer des catégories et des ranks actuellement (du simple CRUD on va dire), avec une pagination fonctionnel.

(il n'y a pas encore de forum en soit ou d'affichage des catégories/...), mais je préfèrerais avoir des avis sur le code de base que j'utilise, savoir si je peux l'optimiser, ...

Ah, juste pour PHP7, je sais que je l'utilise pas à la perfection, en-dehors du comparateur logique "??", mais je me suis pas encore penché sur son typage, et comme pour l'instant il ne fait pas en soit gagner en performance me semble, je me suis dit que je pourrais toujours (même si ça sera long...) repasser derrière si ça fournis un gain en perf'.

Voilà, je suis ouvert à tout avis ou suggestion sur le code :) .

Message édité le 21 octobre 2016 à 10:30:53 par DCeno
Pseudo supprimé
Niveau 10
21 octobre 2016 à 13:49:22

Salut,

Je suis un développeur front, je ne saurais pas te dire ce que vaut ton projet côté back. Mais effectivement, aujourd'hui on manque de "bon" cms de forum.

deepblue deepblue
MP
Niveau 13
21 octobre 2016 à 16:45:42

Je le testerai ce weekend.

J'ai parcouru très rapidement le code et je t'invite à

  • faire de l'injection de dépendance : c'est pratique et ça permet de faire évoluer facilement ton projet et de faciliter les contributions
  • faire un vrai routeur : tu vas nécessairement devoir faire de belles url
  • faire un peu plus de tests sur les données utilisateur (typiquement dans routeur actuel et surtout dans les formulaires)
  • intégrer la notion d'environnement : passer en mode prod ou dev pour activer ou pas des features (affichage ou pas des erreurs, outils de debugs/profiling, conf email spécifique, whatever)
  • essayes dès à présent d'intégrer une console (cli)
DCeno DCeno
MP
Niveau 10
21 octobre 2016 à 18:10:24

Le 21 octobre 2016 à 16:45:42 deepblue a écrit :
Je le testerai ce weekend.

J'ai parcouru très rapidement le code et je t'invite à

  • faire de l'injection de dépendance : c'est pratique et ça permet de faire évoluer facilement ton projet et de faciliter les contributions
  • faire un vrai routeur : tu vas nécessairement devoir faire de belles url
  • faire un peu plus de tests sur les données utilisateur (typiquement dans routeur actuel et surtout dans les formulaires)
  • intégrer la notion d'environnement : passer en mode prod ou dev pour activer ou pas des features (affichage ou pas des erreurs, outils de debugs/profiling, conf email spécifique, whatever)
  • essayes dès à présent d'intégrer une console (cli)

Merci pour ces premiers conseils :) ,

  • Pour l'injection de dépendance, je vais essayer de garder ça en tête, ce n'est pas une notion que j'ai beaucoup utilisé jusqu'ici on va dire, et pour mes Models, vu qu'ils extends déjà une classe de Eloquent qui se charge de toute la liaison base de donnée/... je ne sais pas trop si je peux jouer avec leur _construct (je n'ai pas étudié vraiment le fonctionnement de Eloquent, j'ai juste vu comment on l'utilise avec Laravel et comment il peut fonctionner en-dehors).
  • Pour le routeur, j'ai fait une redirection, en ayant le fonctionnement du framework Yii 2 en tête pour faire ses "pretty URL". Si l'URL rewriting est actif et qu'un booléen est vrai dans la configuration, les URL sont déjà beautifier en /x/y/params1/values1/params2/values2/... , et vont en fonction des paramètres mis dans l'URL appeler le contrôler X et sa fonction Y. En soit ça me laisse un .htaccess "simple" (et je pense que du coup c'est pas prise de tête sous nginx/...), et le gros du travail est effectué par mon index.php d'entrée, le component Redirect.php , et le BaseController.php extend par le Controller appelé.
  • En soit pour les formulaires, ce que j'ai fonctionne, cependant il y a quelque chose que j'aurais voulu améliorer sur ce point, mais où je cale un peu... les paramètres de mon URL sont correctement récupéré, mais au moment de l'appel de la fonction dans le contrôleurs, il va utiliser l'ordre des paramètres plutôt que leur clé associés.

(je pense que c'est lié au fonctionnement même du call_user_func_array, il faudrait en soit que je récupère les noms des paramètres d'une fonction mais je n'ai pas trouvé comment faire, et que les compares aux clés associés aux paramètres transmis pour réorganiser le tableau que je passe à cette fonction).

  • La notion d'environnement, ceci pourrait être fait avec une variable dans la config, et un override des paramètres de PHP pour montrer ou non les erreurs j'imagine ?
  • Pour le CLI, je ne me suis pas vraiment pencher sur cette idée, en soit si je veux que mon code puisse tourner parfaitement sur des hébergements mutualisés par exemple, je pense devoir éviter toute les situations où un script comme artisan de Laravel ou celui de Yii soit nécessaire.

En soit, je ne cherche pas à réaliser quelque chose d'aussi avancer qu'un framework, mais juste reprendre certains éléments des frameworks pour essayer de faire un forum plutôt performant sur mon code :)

Message édité le 21 octobre 2016 à 18:12:36 par DCeno
deepblue deepblue
MP
Niveau 13
22 octobre 2016 à 17:02:16

J'imagine que tu travailles sous Windows. Fais attention à la casse, j'ai du renommer le répertoire "admin" en "Admin" pour accéder au backoffice.

L'injection de dépendance aura un intérêt dans les contrôleurs et dans l'implémentation d'un conteneur de services. Jettes un œil à l'inspection de classe, ça répond également à ta problématique pour le nom des paramètres.

Concernant le routeur, je parle d'en écrire un en PHP. Ce que tu as implémenté pour le moment ne peut pas fonctionner à plus ou moyen terme. C'est assez mal foutu en fait.

Pour le moment, compliqué de faire des tests potables je pense. Le design (du dev) n'est pas exceptionnel et je pense que tu devrais revoir pas mal de trucs avant de continuer.

Bon courage :ok:

lisarael lisarael
MP
Niveau 13
22 octobre 2016 à 19:16:37

Le 21 octobre 2016 à 13:49:22 warpShadow a écrit :
Salut,

(...) Mais effectivement, aujourd'hui on manque de "bon" cms de forum.

Discourse. End of discussion. Genre, vraiment.

Quant au projet de l'auteur, j'essaie d'y jeter un oeil quand j'ai le temps. Ceci dit, ça fait vraiment trop longtemps que je n'ai plus fait de PHP pour dire d'avoir un avis vraiment pertinent.

DCeno DCeno
MP
Niveau 10
22 octobre 2016 à 20:44:45

Le 22 octobre 2016 à 17:02:16 deepblue a écrit :
J'imagine que tu travailles sous Windows. Fais attention à la casse, j'ai du renommer le répertoire "admin" en "Admin" pour accéder au backoffice.

L'injection de dépendance aura un intérêt dans les contrôleurs et dans l'implémentation d'un conteneur de services. Jettes un œil à l'inspection de classe, ça répond également à ta problématique pour le nom des paramètres.

Concernant le routeur, je parle d'en écrire un en PHP. Ce que tu as implémenté pour le moment ne peut pas fonctionner à plus ou moyen terme. C'est assez mal foutu en fait.

Pour le moment, compliqué de faire des tests potables je pense. Le design (du dev) n'est pas exceptionnel et je pense que tu devrais revoir pas mal de trucs avant de continuer.

Bon courage :ok:

merci :) , j'ai bien fait de demander un avis sur ma base avant de continuer du coups x) , je vais me pencher sur l'aspect routeur en premier je pense.

Sinon yes, je travail sous Windows/WAMP (j'ai déjà un serveur unix (un freebsd avec PHP7 et Apache24 qui fonctionne) prêt pour me faire un site pour le présenter et pour le tester, mais pas encore pris le temps de déployer mon code dessus).

Le 22 octobre 2016 à 19:16:37 lisarael a écrit :

Le 21 octobre 2016 à 13:49:22 warpShadow a écrit :
Salut,

(...) Mais effectivement, aujourd'hui on manque de "bon" cms de forum.

Discourse. End of discussion. Genre, vraiment.

Quant au projet de l'auteur, j'essaie d'y jeter un oeil quand j'ai le temps. Ceci dit, ça fait vraiment trop longtemps que je n'ai plus fait de PHP pour dire d'avoir un avis vraiment pertinent.

Oui, 'fin Discourse ne tourne pas en PHP et ne dois pas pouvoir être lancer sur beaucoup d'hébergement mutualisé... (Bon, en soit un VPS ça ne coûte pas chère de nos jours...)

Message édité le 22 octobre 2016 à 20:47:48 par DCeno
DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment