PHPackages                             jemdev/dbrm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. jemdev/dbrm

ActiveLibrary[Database &amp; ORM](/categories/database)

jemdev/dbrm
===========

Database Relational mapping, Access library.

2.1(4y ago)01171CECILL-2.1PHPPHP &gt;=5.4.0

Since Oct 30Pushed 1y ago1 watchersCompare

[ Source](https://github.com/jemdev/dbrm)[ Packagist](https://packagist.org/packages/jemdev/dbrm)[ Docs](http://jem-web.info/)[ RSS](/packages/jemdev-dbrm/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (4)Used By (0)

jemdev\\dbrm : DataBase Relational Mapping
==========================================

[](#jemdevdbrm--database-relational-mapping)

- Auteur : Jean Molliné
- Licence : [CeCILL V2](http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html "Texte complet de la licence CeCILL version 2")
- Pré-requis :
    - PHP &gt;= 5.4
- Utilise : [Hoa\\Registry](https://github.com/hoaproject/Registry "Le package Hoa\Registry sur Github")
- Contact : [Message](https://jem-dev.com/contacter-jem-developpement/ "Envoyer un message à Jean Molliné")
- Github : [github.com/jemdev/dbrm](https://github.com/jemdev/dbrm "Le package jemdev\dbrm sur Github")
- Packagist : [packagist.org/packages/jemdev/dbrm](https://packagist.org/packages/jemdev/dbrm "La package jemdev\dbrm sur Packagist")

---

Installation
============

[](#installation)

Avec Composer, ajouter ce qui suit dans la partie require de votre composer.json:

```
{
  "jemdev/dbrm": "dev-master"
}

```

---

Présentation et principe de fonctionnement.
===========================================

[](#présentation-et-principe-de-fonctionnement)

Ce package permet un accès aux données d'une base de données relationnelle. L'idée fondatrice part du principe qu'on peut faire des lectures sur des tables multiples mais que l'écriture ne peut se faire que sur une seule table à la fois. Par conséquent, il devenait envisageable de créer des objets dynamiques pour chacune des tables sur lesquelles on souhaitait effectuer des opérations en écriture.

Des méthodes relativement simples permettent d'exécuter des requêtes préparées pour la collecte de données. Pour l'écriture, d'autres méthodes permettent de créer une instance pour initialiser une ligne d'une table donnée et d'affecter les valeurs souhaitées aux différentes colonnes de la table pour cette ligne. Selon que l'identifiant de la ligne est fourni ou non, l'écriture sera une création ou une modification, voire une suppression.

Pour pouvoir créer ces instances dynamiques, un système permet d'établir une sorte de cartographie du schéma de données, détaillant la liste des tables, des tables relationnelles et des vues qui sont présentes. Sur la base de ces informations, une instance pour une table donnée définit les propriétés en lisant la liste des colonnes, leur types et d'autres informations pratiques.

Lors de la connexion, si le fichier de configuration n'existe pas, il est automatiquement créé. Par la suite, si on modifie la structure du schéma, même si ce n'est que pour ajouter, modifier ou retirer une colonne dans une table, une méthode permet de régénérer ce fichier de configuration. Il m'est apparu comme très peu pratique de devoir créer une classe pour chacune des tables, ces modifications de structure induisant la ré-écriture partielle de certaines de ces classes à chaque fois. Ces classes sont donc gérées dynamiquement et sont, en réalité, des classes virtuelles.

Récupérer un objet de connexion
-------------------------------

[](#récupérer-un-objet-de-connexion)

### Configurer la connexion

[](#configurer-la-connexion)

Il est impératif de créer un fichier contenant les paramètres de connexion au SGBDR. Ce fichier doit être nommé *dbCnxConf.php* et être formaté de la manière suivante :

```
