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_',
);
?>
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.
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.
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.
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().
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
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
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"
Le degrès de débogage (défaut 0=off), 1= identification basique SQL, 2=résultat d'identification, 3=tout
Si définie, les mises à jour sur la base de données sont désactivées. Par défaut : FALSE
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.
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.
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)
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
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
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.
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' .
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' .
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
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.
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_.*/
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_.*/
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.
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.
Si TRUE le générateur insérera un / (ou l'ajoute aux fichiers existants) pour les méthodes valides.