Bcp de fonctions : les inclure ou en faire des methodes ?

Fermé
VotezGlaqnaq - Modifié le 6 déc. 2017 à 15:07
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 6 déc. 2017 à 19:18
Bonjour,

Voilà je travail sur un projet en PHP, que j'ai réalisé de A à Z, et qui a une ampleur non négligeable.
J'ai donc fait pour chaque module, un fichier <module>_fonctions.php, qui ne fais que des includes de toutes les-dites fonctions (1 fonction = 1 fichier, pour que ça soit propre)
Et je me sers de mes fonctions comme ça. simplement en incluant <module>_fonctions.php dans les pages où il y a besoin.

Seulement maintenant j'aimerais faire la refonte du projet en mode POO.

Ma question est la suivante :
Qu'est-ce que j'y gagne à faire une classe <module> et y inclure toutes ces fonctions en static pour pouvoir les utiliser ?
Est-ce bien comme ça que ça se pratique ? Est-ce bien sage de procéder ainsi ?
Est-ce bien plus propre et plus évolutif en POO que comme ça l'est actuellement?

Par ce que de toute façons, dans la déclaration de la classe, les méthodes seront tjr dans des fichiers séparés.
C'est inconcevable de n'avoir qu'un seul fichier avec le code de toutes ces méthodes dedans (nan mais puis quoi encore lol)

Merci pour vos avis éclairé, vous qui avez de l'expérience avec la POO en PHP


1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
6 déc. 2017 à 19:18
Bonjour,

En programmation objet ... on créé des class par "objet" ... et on y place les méthodes associées...
Il faut donc que tu "regroupe" tes différentes fonctions par rapport à leur "utilité"....
Par exemple si tu as des fonctions pour manipuler des dates.. ben tu les places dans une class dates
Si tu as des fonctions qui permettent de générer un graphique.. un class graphique... etc...
Sachant que si des fonctions sont communes à différents "objets" ... il existe l'héritage...
Par exemple une voiture et une motos sont des "enfants" de la class vehicule.
La class vehicule disposant des méthodes AVANCER, RECULER, TOURNER ...
Bref... Le but étant de travailler avec des OBJETS...


Un exemple que j'utilise très régulièrement :
Une class bdd (qui contiendrait la connexion à la bdd et des fonctions permettant de faire des requêtes....) puis avoir des class de traitement qui nécéssitent de faire des requêtes sql...(comme la class user par exemple )



<?php
//Fichier de gestion de la bdd
class cbdd extends PDO{
  
  private $_bdd = NULL;
  private $BDD_HOST = "localhost";
  private $BDD_DATABASE = "maBdd";
  private $BDD_USER = "root";
  private $BDD_PASSWORD = "";
  
  function __construct(){
    parent::__construct();
  }

  /**
  * Connexion à la bdd
  */
  private function connect(){
  
    try{
       $bdd =new PDO('mysql:host='.$this->BDD_HOST.';dbname='.$this->BDD_DATABASE.'; charset=utf8', $this->BDD_USER, $this->BDD_PASSWORD);
       // Activation des erreurs PDO
       $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
       $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch(PDOException $e) {
       die('Erreur : ' . $e->getMessage());
    }
    $this->_bdd = $bdd;
  
  }
  
  public function querySelect($sql,$datas=NULL){
    $result = NULL;
    //Execution de la requete
    try{
      $requete = $this->_bdd->prepare($sql) ;
      $requete->execute($datas) ;
      //on retourne un array contenant les résultats
      $result = $requete->fetchAll();
    }catch(Exception $e){
      // en cas d'erreur :
       echo " Erreur ! ".$e->getMessage();
       echo " Les datas : " ;
      print_r($datas);
    }
    return $result;
  }


}
?>


<?php
// class USERS
class users extends PDO{

  function __construct(){
    parent::__construct();
  }
  
  /**
  * retourne la liste des users
  */
  public function get_liste_users(){
    $sql = "SELECT * FROM matableusers ";
    return $this->querySelect($sql);
  }

}
?>


Et pour les utiliser...
<?php

//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//includes des class
require_once "cbdd.php";
require_once "users.php";

$oUser = new users();

$listeUser = $oUser->get_liste_users();

print_r($listeUser);





0