FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 15 mars 2011 

 
OuvrirSommaireBases de donnéesMapping objet relationnel (ORM) et persistanceEZPDO

EZPDO est une solution d'ORM en PHP.

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

Créé le 2007-07-10  par Guillaume Rossolini

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

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
Sélectionnez
<?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>
Créé le 2007-07-11  par Guillaume Rossolini

Lien : Comment installer une bibliothèque ?
Lien : Comment installer une extension pour PHP ?

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é.

Créé le 2007-07-11  par 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.

Créé le 2007-07-11  par 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
Sélectionnez
<?php

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

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

?>
index.php
Sélectionnez
<?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);

?>
Créé le 2007-07-11  par Guillaume Rossolini

Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.

models/User.php
Sélectionnez
<?php

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

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

?>
Liste complète
Sélectionnez
<?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
Sélectionnez
<?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 />';
}

?>
Créé le 2007-07-11  par Guillaume Rossolini

Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.

models/User.php
Sélectionnez
<?php

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

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

?>
 
Sélectionnez
<?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);
}

?>
Créé le 2007-07-11  par Guillaume Rossolini

Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.

models/User.php
Sélectionnez
<?php

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

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

?>
 
Sélectionnez
<?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);
}

?>
Créé le 2007-07-11  par Guillaume Rossolini
models/User.php
Sélectionnez
<?php

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

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

?>
index.php
Sélectionnez
<?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');

?>
Créé le 2007-07-11  par Guillaume Rossolini

Prenons l'exemple d'un utilisateur (nom + mot de passe) qui écrit des messages (titre + texte).

models/User.php
Sélectionnez
<?php

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

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

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

?>
models/Message.php
Sélectionnez
<?php

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

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

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

?>
index.php
Sélectionnez
<?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 />';
    }
}

?>
Créé le 2007-07-11  par Guillaume Rossolini
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Cette page est déposée.