Je commence avec CodeIgniter et après plusieurs heures de plongée dans Google, je suis un peu confus.
Nous allons essayer d'expliquer ma question avec un exemple simple: j'ai une table 'voiture' avec les champs " nom " et "couleur". Donc je veux avoir une classe php Voiture, de sorte que mon code pourrait ressembler enfin comme ceci:
$car = new Car('BMW', 'red'); //new $car Object
$car->save(); //this will make an SQL insert to the table 'car'
//Lets query all cars
$cars = Car::get_all();
//cars will be an array of Car objects, (not a set of rows!)
Donc, je suis à la recherche de quelque chose d'assez similaire à ce que vous avez dans au système rubyonrails ou Django (Python). J'ai besoin de manipuler tout type de relations, et d'être capable d'écrire du code dans un vrai OOP+MVC façon.
Ce sont mes échoué approches pour l'obtenir:
À l'aide d'un ORM (DataMapper, de la Doctrine, AcidCrud...)
Ils ont besoin de trop de paramètres, ou ils gérer les relations dans une mauvaise façon.
À l'aide de CodeIgniter classes (pour prolonger la CodeIgniter du Modèle de la classe)
class Car extends Model{
public function Car($name='',$color='')
{
$this->name = $name;
$this->color = $color;
parent::Model();
}
public function save()
{
$data = array(
'name' => $this->name ,
'color' => $this->color
);
$this->db->insert('cars' $data);
}
Et ainsi de suite... Problème avec cette approche est que si un faire un var_dump() de dollars de l'objet voiture, je vois qu'il contient beaucoup de choses à partir de la CodeIgniter, tels que les objets CI_Config, CI_Input, CI_Benchmark, etc. Donc je pense que ce n'est pas une bonne solution, parce que chaque objet de ma classe de Voiture, il contient beaucoup de données répétée, (il aura un mauvais rendement!), n'est-ce pas?
Ne pas utiliser le CodeIgniter modèles
J'ai pu faire mes modèles sans les étendant à partir de CodeIgniter du Modèle de la classe, puis à l'aide de l'ordinaire PHP5 constructeur (__construct() au lieu de la fonction Car()), mais le problème dans ce cas est: comment j'ai accès à l' $db objet de créer des requêtes sur l'aide de la CodeIgniter est ActiveRecord? et, comment je charge les modèles (ses cours) au sein de l'contrôleurs?