FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
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 10 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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 11 juillet 2007  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.com 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.