Merci pour cette réponse complète. Je vais essayer de reprendre chaque points comme au dessus.
Il y a des choses qui sont complètement mélangées, et c’est le bordel.
Ah, ça, carrément ! Comme je l’ai dit dans mon post initial, cette organisation n’est pas bonne. Je ne souhaite pas la changer pour les raisons énoncées plus haut : C’est une formation (un peu pourrie) que j’ai suivie, et ils nous apprenne à coder avec cette organisation… que je trouve bordélique. Effectivement c’est à revoir, mais je souhaite continuer comme ça car je suis curieux de savoir comment on peu s’en sortir avec sur un projet un peu conséquent, raison pour laquelle j’ai choisis un site e-commerce.
Les conventions de nommage des fichiers : Tu as des fichiers en camelCase et d’autres en snake_case. Choisis l’un des deux et tiens toi à ce choix.
Alors là c’est ma faute. J’ai pris pour habitude (et donc merci pour cette remarque, c’est une nouvelle fois un point que je dois améliorer) de nommer mes fichiers en CamelCase pour les classes, et les autre fichiers en snake case. En vrai, je je trouve étrange de voir tout les fichiers en CamelCase. Par exemple, si tu prend un projet Laravel, les vues sont en snake case et les entité ou controller en CamelCase (donc les fichiers étant des classes). Quelles nommage dois-je utiliser selon toi ?
Pour moi, la PHPDoc est indispensable à tous les projets PHP ! Si je prends par exemple ce code, impossible depuis un autre fichier de savoir ce que je dois passer. Et quand en plus un array est attendu (ce qui est une très très très mauvaise pratique), là ça devient vraiment difficile.
Merci ! J’attendais cette remarque.
Alors pour expliquer un peu pourquoi ça : Comme je l’ai dit un peu plus haut, j’ai suivis une formation qui est tout sauf excellente. Devine quoi ? Oui, voilà comment ils nous apprennent à coder dans les cours.
J’ai aussi pensé que c’était une erreur de faire comme ça, pour les même raisons que tu énonce. Cependant, je me suis dit : Ok, peut être que je me trompe ?
Pour en être sûr, j’ai décidé de laisser comme ça dans ce projet, en espérant avoir une remarque dessus, ce qui est le cas, et donc ça confirme mes pensées.
D’ailleurs, dans mes autres projets (sauf quand je rejoins une équipe, auquel cas j’essaye de suivre ce qui à déjà été mis en place), je met le type de la variable dans les paramètres et je ne passe pas de tableau (sauf dans certain cas).
Ce n’est pas clair, on ne sait pas ce qu’on doit envoyer exactement, on peut faire une erreur de typo, etc. En plus là tu ne vérifies même pas l’existence des clés présentes.
Alors en fait si, je vérifie. $arg['foo'] ?? 'bar'
par exemple, indique de passer la variable $arg['foo']
si elle existe, sinon ça enverra bar
. C’est la même chose que isset($arg['foo']) ? $arg['foo'] : 'bar'
.
Je vais partir du principe que tu tournes sur PHP 7.2. Pourquoi ? Car depuis cette version, il est possible de typer correctement les arguments attendus par une méthode. En plus d’éviter des erreurs, c’est une indication de ce qui est exactement attendu. Ainsi l’exemple précédent devient ceci :
Cf. un peu plus haut.
Découpe ton code : Quand je vois un fichier fourre-tout comme celui-ci, ça me fait peur.
Là par contre, c’est en effet une amélioration que je dois faire. Je ne savais pas trop si je devais tout mettre dedans et faire comme un fichier "helper", où séparer. J’ai peur qu’en séparant, je me retrouve avec 1000 fichiers (j’exagère, ok ) qui ne contienne qu’une ou deux fonctions.
Donc, avec ta remarque, je pense que je vais créer un dossier "helpers" et y mettre plusieurs fichiers découpés. Penses-tu cependant qu’il soit mieux d’inclure tout ces fichiers partout (donc dans le top.php), ou les inclure là où j’en ai besoin ? Je pencherais plus pour la seconde option. Mais comme le but et de m’améliorer, j’attend tout de même ta réponse (pour ne pas prendre une mauvaise habitude).
C’est une chose que négligent la plupart de ceux qui débutent (et même certains qui ne débutent plus), et c’est un tort. Ton code aura beau être le plus propre et optimisé possible, si ta BDD est bancale, ton site sera bancal.
Il faut vraiment que j’apprenne à utiliser une base de données. C’est quelque chose que j’ai toujours négligé. Je met souvent des VARCHAR 255, aucune clé étrangère (je crois que c’est important lors d’une relation), etc.
Donc merci encore pour ta réponse. Ca fait des points à améliorer, et ça à aussi confirmer certaines pensées que j’avais.
D’ailleurs, pour m’y retrouver un peu plus et reprendre chaque points, je vais me créer un petit document listant les choses que je dois revoir.
Dans tout les cas, c’est très gentil à vous d’avoir pris du temps pour lire mon code et me faire des réponses complètes. Je vous remercie encore une fois.
Je continue ce projet ce soir en incluant les améliorations, et je vais par la même occasion faire un peu de lecture sur certain sujets.