Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Bases de données > Mapping objet relationnel (ORM) et persistance > EZPDO
        Qu'est-ce qu'EZPDO ?
        Comment installer EZPDO ?
        Comment fonctionne EZPDO ?
        Comment gérer la persistance avec EZPDO ?
        Commment insérer des données avec EZPDO ?
        Comment lire les enregistrements d'une table avec EZPDO ?
        Comment modifier un enregistrement d'une table avec EZPDO ?
        Comment supprimer un enregistrement d'une table avec EZPDO ?
        Comment vider une table avec EZPDO ?
        Comment relier deux tables avec EZPDO (relation 1,N) ?



Qu'est-ce qu'EZPDO ?
auteur : Guillaume Rossolini
en EZPDO est une solution d'ORM en PHP.

Cette bibliothèque utilise ADOdb, une bibliothèque écrite en PHP.

lien : faq Qu'est-ce qu'ADOdb ?
lien : fr Tutoriel ORM : Simplifiez les accès à votre base de données avec EZPDO en PHP, par Pierre-Nicolas Mougel

Comment installer EZPDO ?
auteur : Guillaume Rossolini
EZPDO est une bibliothèque écrite en PHP, elle a besoin des extensions tokenizer, xml, simplexml et sqlite pour fonctionner.

Enfin, il faut placer quelque part un fichier de configuration comme celui-ci :
config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<options>
  <source_dirs>classes</source_dirs>
  <compiled_dir>compiled</compiled_dir>
  <default_dsn>mysql://Yogui:motdepasse@localhost/developpez</default_dsn>
</options>
lien : faq Comment installer une bibliothèque ?
lien : faq Comment installer une extension pour PHP ?

Comment fonctionne EZPDO ?
auteur : Guillaume Rossolini
EZPDO utilise les commentaires du code source PHP pour deviner la structure de la BDD (c'est la persistance). C'est le tag "@orm" (syntaxe phpDocumentor) qui est utilisé.


Comment gérer la persistance avec EZPDO ?
auteur : Guillaume Rossolini
Il faut agir sur les données pour qu'EZPDO crée les tables dans la BDD : un ajout ou une suppression feront l'affaire.


Commment insérer des données avec EZPDO ?
auteur : Guillaume Rossolini
Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe. Le champ eoid (identifiant numérique auto incrémenté) est ajouté automatiquement par EZPDO.
models/User.php
<?php

class User
{
    /**
    * @orm char(15)
    */
    public $name;

    /**
    * @orm char(40)
    */
    public $password;
}

?>
index.php
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

// créer un utilisateur
$user = $db->create('User');
$user->name = 'Yogui';
$user->password = strval(sha1('1234'));

// créer un autre utilisateur
$user = $db->create('User');
$user->name = 'BrYs';
$user->password = strval(sha1('4321'));

$db->flush($user);

?>

Comment lire les enregistrements d'une table avec EZPDO ?
auteur : Guillaume Rossolini
Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.
models/User.php
<?php

class User
{
    /**
    * @orm char(15)
    */
    public $name;

    /**
    * @orm char(40)
    */
    public $password;
}

?>
Liste complète
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

$users = $db->find($db->create('User'));
foreach($users as $user)
{
    echo $user->name.'<br />';
}

?>
Liste filtrée
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

$user = $db->create('User');
$user->name = 'Yogui';
$users = $db->find($user);
foreach($users as $user)
{
    echo $user->name.'<br />';
}

?>

Comment modifier un enregistrement d'une table avec EZPDO ?
auteur : Guillaume Rossolini
Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.
models/User.php
<?php

class User
{
    /**
    * @orm char(15)
    */
    public $name;

    /**
    * @orm char(40)
    */
    public $password;
}

?>
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

$user = $db->create('User');
$user->name = 'Yogui';
$users = $db->find($user);
foreach($users as $user)
{
    $user->name = 'Yog';
    $db->commit($user);
}

?>

Comment supprimer un enregistrement d'une table avec EZPDO ?
auteur : Guillaume Rossolini
Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.
models/User.php
<?php

class User
{
    /**
    * @orm char(15)
    */
    public $name;

    /**
    * @orm char(40)
    */
    public $password;
}

?>
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

$user = $db->create('User');
$user->name = 'Yogui';
$users = $db->find($user);
foreach($users as $user)
{
    $db->delete($user);
}

?>

Comment vider une table avec EZPDO ?
auteur : Guillaume Rossolini
models/User.php
<?php

class User
{
    /**
    * @orm char(15)
    */
    public $name;

    /**
    * @orm char(40)
    */
    public $password;
}

?>
index.php
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

$db->deleteAll('User');

?>

Comment relier deux tables avec EZPDO (relation 1,N) ?
auteur : Guillaume Rossolini
Prenons l'exemple d'un utilisateur (nom + mot de passe) qui écrit des messages (titre + texte).
models/User.php
<?php

class User
{
    /**
    * @orm composed_of many Message
    */
    public $messages;

    /**
    * @orm char(15)
    */
    public $name;

    /**
    * @orm char(40)
    */
    public $password;
}

?>
models/Message.php
<?php

class Message
{
    /**
    * @orm has one User
    */
    public $user;

    /**
    * @orm char(50)
    */
    public $title;

    /**
    * @orm char(1000)
    */
    public $text;
}

?>
index.php
<?php

include_once 'classes/ezpdo_runtime.php';
include_once 'models/User.php';
include_once 'models/Message.php';

// load config.xml (optional: not needed if it is in currrent dir)
//epLoadConfig('/path/to/your/config.xml');

// récupérer le gestionnaire de persistance
$db = epManager::instance();

$message_1 = $db->create('Message');
$message_1->title = 'test 1';

$message_2 = $db->create('Message');
$message_2->title = 'test 2';

$message_3 = $db->create('Message');
$message_3->title = 'test 3';


// créer un utilisateur
$user = $db->create('User');
$user->name = 'Yogui';
$user->password = strval(sha1('1234'));
$user->messages = array($message_1, $message_2);

// créer un autre utilisateur
$user = $db->create('User');
$user->name = 'BrYs';
$user->password = strval(sha1('4321'));
$user->messages = $message_3;

$db->flush();

$user = $db->create('User');
$users = $db->find($user);
foreach($users as $user)
{
    echo $user->name.'<br />';
    foreach($user->messages as $message)
    {
        echo $message->title.'<br />';
    }
}

?>


Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com