[RESOLU] Avis sur mon code ?

Eléphanteau du PHP | 47 Messages

07 déc. 2020, 12:28

Bonjour,

Je me mets à la POO, car visiblement c'est bien mieux pour la maintenance et plein d'autres choses. Je viens d'écrire ma première classe et j'aimerais savoir si le code est bien écrit. Elle fonctionne parfaitement, mais y a t'il des erreurs à éviter dans ce genre d'exercice ? Une autre question, si je veux faire un affichage en fonction de l'ID, comment je retourne la valeur de mon ID depuis mon formulaire vers ma Classe. Je pense qu'il faut passer par un __construct et des getters et des setters.

Mais je ne vois pas très claire sur le sujet.

Voici mon code, soyez critique surtout au niveau sécurité.

class Cours{

    public function __construct(){

    }

    public function getCours(){

                $db =Database::connect();
                $db->exec("SET CHARACTER SET utf8");
		$statement=$db->query("SELECT * FROM classes"); // on va chercher tous les champs de la table stages
                $resCours= $statement->setFetchMode(PDO::FETCH_OBJ);
                Database::disconnect();

		while( $resCours = $statement->fetch() ) // on récupère la liste des stages
		{
                       // on affiche les stages par nom
                      echo'
                        <tr>
                        <td>'.$resCours->days.'</td>
                        <td> '.$resCours->hours.'</td>
                        <td>'.$resCours->ages.'</td>';
                        echo'<td>'.$resCours->priceone. ' € / '.$resCours->pricetwo.' €</td>';
                        if($resCours->nbrstmax==$resCours->nbrstcp){
                            echo'<td>Cours complet</td>
                            </tr>';
                            }
                           else{
                           
                            echo'<td><a href="inscription.php?cours='.$resCours->id.'" class="choiceInscr">'.$resCours->name.'- 
                                              '.$date=date('yy').'</a></td>
                            </tr>';
                        }
		}

    }
    }
Merci d'avance ;-)

Mammouth du PHP | 2703 Messages

07 déc. 2020, 14:55

si l'on veut la liste des cours, non pas dans une table mais dans une liste ul li, va-t-il y avoir plein de code redondant ?
si l'on veut la liste des cours, non pas dans une table html mais dans le texte d'un email en texte brut, va-t-il y avoir plein de code redondant ?

si la réponse est oui, alors le code n'est pas bon.

Eléphanteau du PHP | 47 Messages

07 déc. 2020, 15:10

Merci de la réponse, ici je rempli un tableau bootstrap. J'ai regardé pour faire un code plus propre mais je n'ai rien trouvé. Vous avez un exemple ou un tuto à me conseiller svp ? Je trouve plein d'exemple et de Tuto sur la POO, mais aucun qui parle de la POO avec les bases de données. C'est toujours les trucs basiques qui vous ne servirons à pas grand chose. Merciiii

Eléphanteau du PHP | 47 Messages

08 déc. 2020, 08:29

Bonjour, j'ai longuement analyser le code et celui-ci ne génère pas de code superflu à mon sens. Il génère uniquement le code en fonction du nombre d'enregistrement qu'il y a dans ma base de donnée. Par contre, je suis sur qu'il y a moyen de faire plus propre et plus pro et c'est ça qui m'intéresse avoir une petite explication de comment optimiser ce code ou un exemple.
Merci et à tous

Mammouth du PHP | 2703 Messages

08 déc. 2020, 14:58

si tu veux afficher non pas une fois dans ta page le contenu de la table classes mais 2 fois, tu va te connecter 2 fois à la base de données, c'est une fois de trop, tu vas executer 2 fois la même requête, c'est une fois de trop.

Eléphanteau du PHP | 47 Messages

08 déc. 2020, 17:14

Merci, j'ai compris ce que tu me dis, ici non c'est une seule fois sur les pages concernées, mais effectivement il y a plusieurs pages sur le site qui demande accès ce code. Sinon, comment faire ? Tu as un exemple ?

Eléphant du PHP | 83 Messages

18 déc. 2020, 22:21

Ceci n'est pas un exemple, mais une remarque : pour tenir compte de la remarque de or 1 (plusieurs fois une connexion et l'exécution des requêtes), pour éviter ça, je découperais simplement la méthode getcours() en 3 méthodes ( connect(), reqExec() et diqpCours() ).

Eléphanteau du PHP | 47 Messages

21 déc. 2020, 10:05

Ceci n'est pas un exemple, mais une remarque : pour tenir compte de la remarque de or 1 (plusieurs fois une connexion et l'exécution des requêtes), pour éviter ça, je découperais simplement la méthode getcours() en 3 méthodes ( connect(), reqExec() et diqpCours() ).
Merci pour le retour, depuis j'ai lu beaucoup plus d'infos sur la programmation orienté objet et effectivement cela n'est pas top. Il y a moyen de bien optimiser ce code. :wink:

Eléphant du PHP | 83 Messages

21 déc. 2020, 10:41

Salut, comme toi je débute en POO (été 2019) (PHP procédural depuis 2007). Si tu cherches un peu de lecture bien foutue : https://www.developpez.net/forums/d2035 ... rsini-poo/

Eléphanteau du PHP | 47 Messages

21 déc. 2020, 10:57

Salut, comme toi je débute en POO (été 2019) (PHP procédural depuis 2007). Si tu cherches un peu de lecture bien foutue : https://www.developpez.net/forums/d2035 ... rsini-poo/
Salut Laurent,

Merci pour l'info, j'ai également trouvé un bon tuto sur udemy, un tuto de Matthieu Gaston sur le développement de site MVC. Il y aborde la POO, c'est basique, mais cela te permet d'avoir une approche de la POO et de MVC. En trois heures trente, tu as fait le tour et tu comprends le concept de base de beaucoup de chose. Après, il faut approfondir le sujet au maximum bien entendu.

Merci pour ton retour, c'est sympa ;-)

Eléphant du PHP | 83 Messages

21 déc. 2020, 11:36

OK Stu 76, peux-tu me donner le nom du tuto (une petite révision, ça peut me faire du mal, et chez Udemy, c'est pas cher (déjà suivi, autrefois, des formations)) ?

Eléphanteau du PHP | 47 Messages

21 déc. 2020, 11:56

OK Stu 76, peux-tu me donner le nom du tuto (une petite révision, ça peut me faire du mal, et chez Udemy, c'est pas cher (déjà suivi, autrefois, des formations)) ?
Voici, "Créer une application PHP (+CRUD), en Programmation Orientée Objet (POO), avec une architecture MVC et une BD MySQL". Elle est pas mal, j'adore le formateur, j'ai suivi plusieurs formations à lui. Bien entendu c'est toujours la base. Mais quand la base est solide, c'est plus facile après. Et puis soyons honnête, trouver les mêmes infos sur internet est tout à fait possible. L'avantage ici, c'est que tu as les infos, les explications et les exemples.

Merci pour les infos du livre, il a l'air pas mal non plus :wink: