Options de configuration

Options de configuration – Définition des options par défaut d'accès à une base de données

Configuration

DB_DataObject doit être configuré avant de l'utiliser, d'auto-générer les classes et les définitions. La façon la plus simple de configurer DB_DataObject est d'utiliser les fichiers ini (bien que vous pourriez vouloir utiliser la classe PEAR::Config ou alors votre propre sysème de configuration)

Un fichier de configuration typique pour DB_DataObject

[DB_DataObject]

database    = mysql://user:password@localhost/vending
schema_location = /home/me/Projects/myapplication/DataObjects
class_location  = /home/me/Projects/myapplication/DataObjects
require_prefix  = DataObjects/
class_prefix    = DataObjects_
db_driver       = MDB2 # utilisez ca si vous voulez que MDB2 soit le driver
quote_identifiers = 1

Pour utiliser le fichier ini avec DB_DataObject (et probablement tout autre classe qui utilise les options comme ceci)

Définition des options par défaut

<?php
$config 
parse_ini_file('example.ini',TRUE);
foreach(
$config as $class=>$values) {
    
$options = &PEAR::getStaticProperty($class,'options');
    
$options $values;
}

// ou bien sans utiliser de fichier ini ; configuration à l'aide de PHP.

$options = &PEAR::getStaticProperty('DB_DataObject','options');
$options = array(
    
'database'         => 'mysql://user:password@localhost/vending',
    
'schema_location'  => '/home/me/Projects/myapplication/DataObjects',
    
'class_location'   => '/home/me/Projects/myapplication/DataObjects',
    
'require_prefix'   => 'DataObjects/',
    
'class_prefix'     => 'DataObjects_',
);
?>

Options de configuration - Requis

database DSN

C'est la valeur par défaut de data source name (DSN) pour se connecter à la base de données. Regardez la page sur la configuration du DSN pour DB ou page sur la configuration du DSN pour MDB2 pour plus de détails.

schema_location dossier

Le dossier où se trouve le fichier contenant le schéma de base de données DB_DataObject.

DB_DataObject stocke la description de la base de données (Tables et Colonnes) dans un fichier .ini, dans ce répertoire. Ces informations sont utilisées pour déterminer si la colonne est une chaîne de caractères et donc, qu'elle a besoin de guillemets ou si c'est un nombre ( et qu'il est sélectionné) au moment de construire la requête SQL. Habituellement, on stocke le schéma dans le même dossier que celui contenant les classes DataObject.

require_prefix dossier

Le chemin absolu ou relatif vers votre chemin d'inclusion par défaut, où vos extensions de classes peuvent être trouvées.

Il est utilisé par les méthodes staticGet() et getLinks() pour charger automatiquement les classes.

class_prefix string

Toutes les classes générées sont nommées en suivant ce schéma : {class_prefix}ucfirst($table_name) . Utilisez ce paramètre pour préfixer ce nom, il est utilisé par les méthodes staticGet() et getLinks().

Options de configuration - Optionnelles

db_driver string

default = DB, Utilisez cette option de configuration pour pour déterminer le driver d'abstraction que DB_DataObject devra utiliser.

utiliser MDB2 comme driver

 	  	 db_driver = MDB2

sequence_{table} string

Pour coder en dur la clé (autoincrément/valeur suivante) pour une table à une clé spécifique, effaçant tout ce qui est défini pour cette clé dans le fichier. Normalement, utilisé sur les bases de données qui ne peuvent pas être interrogées correctement sur leur structure.

Utilisation du login comme clé pour une table de personne

sequence_person = login

ignore_sequence_keys string

Si vous ne voulez pas utiliser nextval() de PEAR, pour compléter automatiquement les séquences, cela peut être désactivé pour "ALL" ou pour une liste de tables "person,cart,group"

debug integer

Le degrès de débogage (défaut 0=off), 1= identification basique SQL, 2=résultat d'identification, 3=tout

debug_ignore_updates boolean

Si définie, les mises à jour sur la base de données sont désactivées. Par défaut : FALSE

dont_die boolean

Par défaut : FALSE. Le comportement standard de dataobjects est de fournir un PEAR_ERROR_DIE (e.g. sortie PHP) lorsqu'une erreur survient, comme une identification qui échoue à une base de données ou lorsqu'on envoie un objet de type invalide à une méthode. Cependant, si vous devez exécuter cela sur un serveur directement, vous devez probablement vouloir définir ce paramètre à TRUE et définir la gestion des erreurs PEAR pour récupérer ces erreurs et afficher un joli message 'désolé, nous sommes hors service pour maintenance' sur la page.

quote_identifiers boolean

Pour forcer l'ajout de quote aux identifiants dans les requêtes SQL, définissez à 1 This is useful if any table names use hyphens.

Requête générée avec et sans quote_identifiers

quote_identifiers = 1;
SELECT 'somecol' FROM 'sometable' WHERE 'somevalue'=1;

quote_identifiers = 0;
SELECT somecol FROM sometable WHERE somevalue=1;

Note: Ca ne devrait pas affecter les données envoyées aux méthodes telles que whereAdd(), orderBy(), et groupBy(), qui attendent des données raw.

proxy string

Ceci active la construction des classe et des classes ini à la volée, plutôt que ce soit vous qui écriviez le code. (actuellement, la seule valeur supportée est "full", qui génère le schéma des données et la classe par défaut)

Opitons de configuration - Bases de données multiples (optionnel)

database_* string

Lorsque vous avez de multiples bases de données, vous pouvez utiliser le database_* our spécifier le DSN pour chaque base de données

Utilisation de multiples bases de données - mot de passe des bases de données

database_authentication  = mysql://user:password@localhost/authentication
database_sales           = mysql://user:password@localhost/sales

table_* string

Lorsque vous avez plusieurs bases de données, vous pouvez utiliser les variables de configuration table_* pour lier les tables vers différentes bases de données, par exemple :

Utilisation de plusieurs bases de données - configuration des tables

table_users     = authentication
table_saleslog  = sales
table_stock     = sales

Options de configuration - Construction

class_location dossier

Le dossier où se trouve vos extensions de classes DataObject.

Utilisez par la classe d'auto-construction lors de la mise à jour/écriture de vos définitions de c classes.

extends string

Le nom de la classe de base (habituellement DB_DataObject)

Si vous souhaitez ajouter une interface commune pour les méthodes utiles pour toutes les classes, vous pouvez définir les options extends_location et extends en une classe différente. Par défaut, c'est 'DB_DataObject' .

extends_location dossier

Le dossier où votre classe de base (habituellement DB_DataObject) se trouve.

Si vous souhaitez ajouter une interface commune pour les méthodes utiles pour toutes les classes, vous pouvez définir les options extends_location et extends en une classe différente. Par défaut, c'est 'DB/DataObject.php' .

generator_class_rewrite boolean

Normalement, lorsque vous créaez à; nouveau une classe depuis la base de données, cela n'altère que les variables et la méthode staticGet. Avec ce paramètre, cette action peut également mettre à jour les champs étendus

build_views boolean

Postgres (et surement d'autres) vous permet de traiter les vues comme des tables normales (i.e. insert/update/delete etc. fonctionne sur ces tables), vous pouvez utilisez cette option pour générer les fichiers pour toutes les vues de la base de données.

Note : Vous devez spécifier les clés manuellement dans les classes générées (i.e. définission des méthodes keys() et sequenceKey() ), car le générateur ne peut pas deviner quelles sont les clés préférées.

generator_include_regex string

Si vous ne voulez générer que les classes et les entrées ini pour des tables spécifiques, vous pouvez utiliser ce aramètre pour construire un masque, seules les tables avec des noms correspondant à ce masque seront générées, par exemple /mytables_.*/

generator_exclude_regex string

Si vous voulez explicitement prévenir la génération des classes et des entrées ini pour des tables spécifiques, vous pouvez utiliser ce paramètre pour construire un masque, toutes les tables qui correspondent à ce masque ne seront pas générées, par exemple /private_tables_.*/

generator_strip_schema boolean

postgresql a un concepte de schémas liés qui se terminent en y préfixant la liste des tables. Cela crée un désordre dans la génération des classes/schémas. En définissant ce paramètre à 1, le générateur ignore le schéma contenu dans le nom de la table.

generator_novars boolean

Si TRUE, le générateur n'écrira pas de définition privé ou de variable pour les colonnes, donc, vous pouvez surcharger get/set.

generator_add_validate_stubs boolean

Si TRUE le générateur insérera un / (ou l'ajoute aux fichiers existants) pour les méthodes valides.

What DB_DataObject can do (Previous) Création des classes de base et du schéma de la base de données (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: madsliejensen
In newer versions, somewhere around 1.9.0 i think, generate_links will also work for postgresql!
Note by: madsliejensen
There is an option 'generate_links' which will read foreign keys and add those to the links.ini-file.

However, this currently only works with mysql/mysqli.
Note by: madsliejensen
As of 1.9.0, the factory()-method can check several directories when autoloading dataobjects:

// support for:
// class_location = mydir/ => maps to mydir/Tablename.php
// class_location = mydir/myfile_%s.php => maps to mydir/myfile_Tablename
// with directory sepr
// class_location = mydir/:mydir2/: => tries all of thes locations.
Note by: Mike
If you are having problem making this work and are suspecting that
DataObject is not reading or getting the configuration variables that you are feeding it. try setting them like this

$_DB_DATAOBJECT['CONFIG']['database'] = "mysql://user:password@localhost/db";
$_DB_DATAOBJECT['CONFIG']['schema_location'] = "/var/www/html/mydir";
$_DB_DATAOBJECT['CONFIG']['class_location'] = "/var/www/html/mydir";
$_DB_DATAOBJECT['CONFIG']['db_driver'] = "MDB2";
$_DB_DATAOBJECT['CONFIG']['quote_identifiers'] = true;

This is the only way that I was able to get DataObject to work.
It would not read the variables in an ini file or set them using the
PEAR::setstaticproperty() function.
Note by: zac.konopa@gmail.com
fyi - if you are using the include or exclude regex in an .ini file wrap your regex in double quotes. I found that if I was trying to match table 'users' using '/users/' it choked but "/users/" worked fine.
Note by: pierre2543@hotmail.com
The option db_driver can be used to specify the database driver to use. By default it uses the DB package. You can force DB_DataObject to use MDB2 by adding the following to your configuration:

db_driver=MDB2

LPC