FAQ PHP

FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
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) ?
EZPDO est une solution d'ORM en PHP.
Cette bibliothèque utilise ADOdb, une bibliothèque écrite en PHP.
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 :
<?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 : 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é.
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.
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.
<?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();
// 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);
?>Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.
<?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();
$users = $db->find($db->create('User'));
foreach($users as $user)
{
echo $user->name.'<br />';
}
?><?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 />';
}
?>Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.
<?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);
}
?>Prenons l'exemple d'un utilisateur ayant un nom et un mot de passe.
<?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);
}
?><?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();
$db->deleteAll('User');
?>Prenons l'exemple d'un utilisateur (nom + mot de passe) qui écrit des messages (titre + texte).
<?php
class User
{
/**
* @orm composed_of many Message
*/
public $messages;
/**
* @orm char(15)
*/
public $name;
/**
* @orm char(40)
*/
public $password;
}
?><?php
class Message
{
/**
* @orm has one User
*/
public $user;
/**
* @orm char(50)
*/
public $title;
/**
* @orm char(1000)
*/
public $text;
}
?><?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 />';
}
}
?>


