2010-07-06 2 views
3

Je suis après une classe de base de données basée sur un modèle pour PHP/MySQL. Mais il doit avoir une fonctionnalité particulière:Modèle de base de données requise (PHP/MySQL)

Une fois que la classe est initialisée (par exemple $ utilisateur = new User();) Je devrais pouvoir accéder aux attributs de la table utilisateur comme suit:

$ user- > name // renvoie la valeur du champ 'name' dans la table user

Je ne devrais pas avoir à définir les attributs ou besoin de créer des fonctions pour retourner la valeur de l'attribut, cela devrait être fait automatiquement quand la classe est initialisé.

Y at-il une telle classe de base de données là-bas? Sinon, quelqu'un peut-il me dire comment je vais créer cette fonctionnalité?

+1

Ce que vous cherchez est appelé une solution ORM (Object relationnel). –

+0

À la vôtre. Cela pourrait être ce que je cherche: http://www.phpactiverecord.org/ – GSTAR

+0

Seul problème est que ORM particulier a besoin de PHP 5.3. Quelqu'un sait-il d'autres solutions? – GSTAR

Répondre

2

Je ne suis pas sûr sur une classe de base de données, mais si vous deviez écrire un, puis regarder dans les méthodes magiques de PHP, en particulier la fonction __get()

http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members

class myClass { 

    function __get($field) { 
     // grab $field from database 
    } 

    function __set($field, value) { 
     // set $field in database 
    } 
} 

$class = new myClass(); 

echo $class->field1; // grab value field1 

$class->field1 = 'myVal'; // set field1 = 'myVal'; 
+0

Cela semble bon. Mais je suppose que je devrais toujours définir manuellement les noms de champs? Je veux une automatisation complète, donc si je devais ajouter un nouveau champ à la base de données, je devrais pouvoir y accéder sans ajouter de nouveau code. Je suppose que ce qui est nécessaire est pour la classe a besoin d'aller à la table, obtenir la liste des noms de champs et les ajouter en tant que propriétés de l'objet. – GSTAR

0

Vous pouvez utiliser stdClass pour le faire que:

$object = new StdClass; 
$object->foo = 'bar'; 

Ou si vous voulez un peu plus de contrôler, vous pouvez utiliser PHP de magic methods

1

Avez-vous regardé Doctrine? Vous pouvez générer des classes de modèle en fonction de votre schéma de base de données. Je l'utilise sur tous les projets et je l'aime.

+0

J'ai regardé Doctrine mais je n'y comprends rien. Avez-vous des exemples d'utilisation pour les fonctions finder et crud? Également avez-vous obtenu la version 1.2 stable ou la version bêta 2.0? – GSTAR

+0

Quelqu'un d'autre a utilisé Doctrine? Est-ce facile à utiliser? – GSTAR

Questions connexes