Problème PHP POO (insertion)
Résolu
PHP
-
PHP -
PHP -
Bonjour, j'ai un problème, je n'arrive pas trouve ou viens de l'erreur.
voici mon code:
index.php
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage(array(
'nom' => 'Victor'
));
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);
______________________________________________
personnage.class.php
class Personnage
{
private $_id;
private $_nom;
public function hydrate(array $donnees){
foreach($donnees as $key => $value){
$method = 'set'.ucfirst($key);
if(method_exists($this, $method)){
$this->$method($value);
}
}
}
//Getters
public function id(){
return $this->id;
}
public function nom(){
return $this->_nom;
}
//Setters
public function setId($id){
$id = (int) $id;
if($id > 0){
$this->_id = $id;
}
}
public function setNom($nom){
if(is_string($nom)){
$this->_nom = $nom;
}
}
}
________________________________________________________
PersonnagesManager.class.php
class PersonnagesManager
{
private $_db;
public function __construct($db){
$this->setDb($db);
}
public function add(Personnage $perso){
$q = $this->_db->prepare('INSERT INTO personnage SET nom=:nom');
$q->bindValue(':nom', $perso->nom());
$q->execute();
}
public function setDb(PDO $db){
$this->_db = $db;
}
}
__________________________
Je sais que mon code il est longue, mais le problème que je n'arrive pas comprend pourquoi ne arche pas. Merci pour votre aide.
voici mon code:
index.php
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage(array(
'nom' => 'Victor'
));
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);
______________________________________________
personnage.class.php
class Personnage
{
private $_id;
private $_nom;
public function hydrate(array $donnees){
foreach($donnees as $key => $value){
$method = 'set'.ucfirst($key);
if(method_exists($this, $method)){
$this->$method($value);
}
}
}
//Getters
public function id(){
return $this->id;
}
public function nom(){
return $this->_nom;
}
//Setters
public function setId($id){
$id = (int) $id;
if($id > 0){
$this->_id = $id;
}
}
public function setNom($nom){
if(is_string($nom)){
$this->_nom = $nom;
}
}
}
________________________________________________________
PersonnagesManager.class.php
class PersonnagesManager
{
private $_db;
public function __construct($db){
$this->setDb($db);
}
public function add(Personnage $perso){
$q = $this->_db->prepare('INSERT INTO personnage SET nom=:nom');
$q->bindValue(':nom', $perso->nom());
$q->execute();
}
public function setDb(PDO $db){
$this->_db = $db;
}
}
__________________________
Je sais que mon code il est longue, mais le problème que je n'arrive pas comprend pourquoi ne arche pas. Merci pour votre aide.
2 réponses
-
Bonjour,
Quand tu dis que ton code "ne arche pas", il fait quoi ? Erreur ? il ne se passe rien ? Ton évier déborde ? -
j'imagine que c'est normal, tu ne fais rien d'autre que créer une personne et le mettre en manager (si j'ai bien compris)
-
Avec ce code marche mais je ne sais pas si ce juste.
function loadClass($classe){
require 'classes/'.$classe.'.class.php';
}
spl_autoload_register('loadClass');
$perso = new Personnage();
$perso1 = array(
'nom' => 'Victor'
);
$perso->hydrate($perso1);
$db = new PDO('mysql:host=localhost; dbname=test1', 'root', '');
$manager = new PersonnagesManager($db);
$manager->add($perso);
-