Doctrine_Manager possède une méthode
setAttribute() qui permet de changer certains... attributs !
Comment ça marche ?
Tout simplement, en appelant la méthode citée :
Code : PHP | <?php
$manager = Docrine_Manager::getInstance();
$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, Doctrine_Core::VALIDATE_ALL);
$manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
|
Les attributs possibles sont définis dans Doctrine_Core et sont de la forme ATTR_
NOM_DE_LATTRIBUT.
Leurs valeurs possibles sont des constantes de la forme
NOM_DE_LATTRIBUT_
VALEUR.
Détail des principaux attributs
ATTR_VALIDATE
Je mettrai prochainement en ligne un chapitre consacré à la validation des données. Nous parlerons plus en détail de cet attribut à ce moment-là.
Cet attribut indique la manière dont Doctrine va valider les données ; par exemple, si l'on doit forcer un champ déclaré de type
integer à contenir bel et bien un nombre entier.
Les valeurs disponibles sont :
- VALIDATE_ALL (correspond à l'ensemble des validateurs suivants) ;
- VALIDATE_LENGTHS ;
- VALIDATE_TYPES ;
- VALIDATE_CONSTRAINTS ;
- VALIDATE_NONE.
Notez que l'on peut combiner plusieurs valeurs avec l'opérateur bit-à-bit « | ». Par exemple :
Code : PHP | <?php
$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, Doctrine_Core::VALIDATE_LENGTHS | Doctrine_Core::VALIDATE_TYPES);
|
ATTR_AUTO_ACCESSOR_OVERRIDE
Autorise ou non la redéfinition des accesseurs, c'est-à-dire, la possibilité ou non de créer une méthode
getProperty() pour accéder à la colonne
property. L'intérêt est de pouvoir effectuer des traitements avant de renvoyer la valeur.
Valeurs possibles :
true ou
false.
ATTR_AUTOLOAD_TABLE_CLASSES
Indique si Doctrine doit ou non charger les classes de table (
ArticleTable par exemple) automatiquement.
Valeurs possibles :
true ou
false. Je vous recommande de le laisser à
true si vous les utilisez. Dans le cas contraire, cela améliorera (légèrement...) les performances.
ATTR_MODEL_LOADING
Indique la manière dont Doctrine va charger les modèles.
Les valeurs possibles sont :
- MODEL_LOADING_AGGRESSIVE : Doctrine inclut TOUS les modèles trouvés, même ceux que vous n'utilisez pas.
- MODEL_LOADING_CONSERVATIVE : stocke simplement le chemin de chaque fichier contenant un modèle, et l'inclu uniquement SI BESOIN.
- MODEL_LOADING_PEAR : ne précharge pas les modèles, vérifie à chaque appel dans le dossier indiqué à loadModels() (souvenez-vous
) si le modèle existe.
ATTR_USE_DQL_CALLBACKS
Cet attribut indique si oui ou non les
hooks DQL doivent être appelés. Reportez-vous au chapitre sur les Events Listeners pour plus de détails sur ces
hooks.
Valeurs possibles :
true ou
false.
Attention, cet attribut est à
false par défaut. Ceci signifie que vous devez explicitement le définir à
true, quelque part dans votre application, pour utiliser les
hooks DQL.
ATTR_QUOTE_IDENTIFIER
Cet attribut indique à Doctrine qu'il doit encapsuler tous les noms de tables, champs, etc. dans des délimiteurs.
Pour info,
MySQL utilise les
backticks (`),
Oracle utilise les guillemets doubles ("),
Access utilise les crochets ([ et ]), etc.
Attention. N'utilisez jamais ces délimiteurs en dur dans votre code. Cela CASSE la portabilité de votre application, ce qui est justement tout l'inverse de ce que l'on veut avec Doctrine !
Valeurs possibles :
true ou
false. Je vous conseille de le mettre à
true uniquement si vous avez des problèmes lors de l'exécution de requêtes.