appelle d'une class dans un sous dossier

Daniel

New Member
#1
Bonjour,
l'appel à une class placée dans model/manager pose pb : erreur 500
si on la place directement dans le dossier model, cela fonctionne

Je n'ai pas de soucis en développement.

le code appelant qui s'arrête à la ligne $managerUtilisateur=new UtilisateurManager($database); qui plante :
PHP:
                $password=Utilisateur::generatePassword();
                $utilisateur=new Utilisateur(array('civilite'=>$validated_data['civilite'],'nom'=>$validated_data['nom'],'prenom'=>$validated_data['prenom'],'mail'=>$validated_data['mail'],'password'=>$password,'tel'=>$validated_data['tel'],'adresse'=>$validated_data['adresse'],'cp'=>$validated_data['cp'],'ville'=>$validated_data['ville']));
                $database = Database::getInstance();
                $managerUtilisateur=new UtilisateurManager($database);
                $retour=$managerUtilisateur->add($utilisateur);
                echo "retour=".$retour;
                switch($retour)
en début de code :
use Model\Manager\UtilisateurManager;

UtilisateurManagement :
PHP:
<?php
//
//
namespace Model\Manager;
use PDO;
use Exception;
use Model\Utilisateur;
class UtilisateurManager{
   
    protected $_db;
    const OPTION = 11;

  public function __construct($db)
  {
    $this->setDb($db);
  }
  public function get($info)
  {
    if (is_int($info))
    {
      $q = $this->_db->query('SELECT * FROM utilisateur WHERE id = '.$info);
      $utilisateur = $q->fetch(PDO::FETCH_ASSOC);
    }
    else
    {
      $q = $this->_db->prepare('SELECT * FROM utilisateur WHERE mail = :mail');
      $q->execute(array(':mail' => $info));
    $utilisateur = $q->fetch(PDO::FETCH_ASSOC);
    }
    return ($utilisateur)?new Utilisateur($utilisateur):0;
   }
/*RECUPERE LISTE CLIENTS*/
  public function getList()
  {
    $utilisateur = array();
  $q = $this->_db->query('SELECT * FROM utilisateur');
    while ($donnees = $q->fetch(PDO::FETCH_ASSOC)){
        $utilisateur[] = new Utilisateur($donnees);
    }
   
    return ($utilisateur)?$utilisateur:0;
  }
   public function add(Utilisateur $utilisateur)
  {
    $q = $this->_db->prepare('SELECT * FROM utilisateur WHERE mail = :mail');
    $q->execute(array(':mail' => $utilisateur->mail()));
    $result=$q->fetch(PDO::FETCH_ASSOC);
    echo "result=".$result;
    if($result)
      return Utilisateur::ADD_CLIENT_DOUBLON;
    else
      {
            try{
      $options = array('cost' => self::OPTION);
      $q = $this->_db->prepare('INSERT INTO utilisateur (civilite,nom,prenom,mail,password,tel,adresse,cp,ville,actif) VALUES :)civilite,:nom,:prenom,:mail,:password,:tel,:adresse,:cp,:ville,:actif)');
      $q->execute(array('civilite'=>$utilisateur->civilite(),'nom'=>$utilisateur->nom(),'prenom'=>$utilisateur->prenom(),'mail'=>$utilisateur->mail(),'password'=>password_hash($utilisateur->password(), PASSWORD_BCRYPT, $options),'tel'=>$utilisateur->tel(),'adresse'=>$utilisateur->adresse(),'cp'=>$utilisateur->cp(),'ville'=>$utilisateur->ville(),'actif'=>"0"));
      }catch (Exception $e){
            echo 'Error PDO : '.$e;
            $return = false;
            }
      return Utilisateur::ADD_CLIENT_OK;
      }
  }
  public function update(Utilisateur $utilisateur){
    try{
      $q = $this->_db->prepare('SELECT * FROM utilisateur WHERE id = :id');
      $q->execute(array(':id' => $utilisateur->id()));
      if($q->rowCount() == 1) {
        $q = $this->_db->prepare('UPDATE utilisateur set civilite = :civilite, nom = :nom, prenom = :prenom, tel = :tel, adresse = :adresse, cp = :cp, ville =:ville WHERE id = :id');
        $q->execute(array('civilite'=>$utilisateur->civilite(),'nom'=>$utilisateur->nom(),'prenom'=>$utilisateur->prenom(),'tel'=>$utilisateur->tel(),'adresse'=>$utilisateur->adresse(),'cp'=>$utilisateur->cp(),'ville'=>$utilisateur->ville(),'id'=>$utilisateur->id()));
        return $utilisateur;
      } else
        return false;
    }catch (Exception $e){
      echo 'Error PDO : '.$e;
      $return = false;
      }
  }

  public function connect($identifiant,$password)
  {
  $q = $this->_db->prepare("SELECT * FROM Utilisateur WHERE mail = :mail");
  $q->execute(array(':mail' => $identifiant));
  if($q->rowCount()==1)
    {
    $utilisateur=$q->fetch(PDO::FETCH_ASSOC);
    if(password_verify($password, $utilisateur["password"]))
    {
      if ($utilisateur["actif"] == false)            // teste si le compte trouvé est actif
      {
        return Utilisateur::CONNECT_CLIENT_INACTIF;
      }
      else
      {
        return ($utilisateur)?new Utilisateur($utilisateur):0;
      }
    }
    else
      return Utilisateur::CONNECT_CLIENT_ERREUR;
    }
  return Utilisateur::CONNECT_CLIENT_MISS;
  }
   /*VERIFICATION DOUBLON*/
  public function doublon($mail)
  {
  return $this->_db->query('SELECT * FROM utilisateur WHERE mail = '.$this->_db->quote($mail))->rowcount();
  }
   public function setDb(PDO $db)
   {
     $this->_db = $db;
   }
}
MERCI !
 
Dernière édition par un modérateur:

PH-Gabriel

Administrator
Membre du personnel
#2
Bonjour Daniel,

Je vous invite à utiliser les balises [ CODE ][ /CODE ] (sans les espaces) la prochaine fois pour partager du code.

Je viens de la faire pour vous.

En espérant que cela va aider la communauté à vous aider.
 

Daniel

New Member
#3
Bonjour,

J'ai trouvé une solution mais pas l'explication. En déplaçant le UtilisateurManager dans le dossier Model et donc en supprimant le dossier Manager tout fonctionne, en local et en prod.

Code:
use Model\UtilisateurManager;
 
Haut