Référence objet

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Référence objet

par naholyr » 08 mars 2007, 11:13

Des solutions ORM le permettent de façon transparente. J'utilise par exemple ezPdo dans plusieurs projets, cela me fait gagner énormément de temps puisque je ne fais plus aucune requête SQL pour la persistance des données (on perd bien sûr en performance). Imaginons qu'on gère une bibliothèque. On va gérer des objets Livre. Pour ajouter un livre à la bibliothèque j'aurai ce type de code :
$epm = epManager::instance();
// on charge notre bibliothèque (objet persistant unique, donc le résultat sera toujours un tableau de taille 1).
$bibliothèque = $epm->find('from Bibliotheque')[0];
// on crée le livre
$livre = $epm->create('Livre');
$livre->titre = "Titre du livre";
... etc ...
// on ajoute le livre à la bibliothèque
$bibliothèque->livres[] = $livre;
Et mon livre est ajouté à la bibliothèque. Quand je retournerai sur la page listant les livres :
$epm = epManager::instance();
$bibliothèque = $epm->find('from Bibliotheque')[0];
foreach ($bibliothèque->livres as $livre) {
    echo $livre->titre . '<br/>';
}
Mon livre apparaîtra bien. Pas de session, pas de requête affichée ni dans le code métier, ni dans l'implémentation de la classe (il y a juste des commentaires /** @orm ... **/ au-dessus des déclarations d'attributs).

C'est le genre de chose permise en "standard" par Java, et rendu possible grâce à ce genre de librairie qui permettent la persistance des données objet de manière transparente. De base ça stocke l'objet en base de données, donc ça limite les performances. Il y a cependant quelques patchs permettant d'utiliser des extensions comme memcache qui permettront de garder l'objet dans la mémoire vive du serveur (l'objet est alors stocké en base ET en ram, la lecture se fait sur la ram, la modification se fait sur la ram et sur la base), et là autant dire qu'on va à l'inverse gagner en performance ;)

Re: Référence objet

par mere-teresa » 07 mars 2007, 13:42

Est-il possible de garder en mémoire des références sur des objets ou des objets complets comme peut le faire JAVA par exemple.
Quel en est l'intérêt ?

par titerm » 07 mars 2007, 09:33

christopher.... Les variables globales ne sont pas persistantes...

par christopher » 07 mars 2007, 00:10

Tu peux aussi utiliser des variables dites globales :
$GLOBALS['Param_name'];

par Invité » 06 mars 2007, 22:17

On peut aussi les mettre en session et les déserialiser quand on en a besoin

par titerm » 06 mars 2007, 21:31

La durée de vie d'un objet en php est celle de l'affichage d'une page web.
Ce que tu peux faire tout au plus, c'est sérialiser ton objet avant sa destruction et le déserialiser en début de page. La zone ou tu stockes les versions sérialisés ne dépend que de toi... cela peut etre une BDD, du HDD ou de la ram via APC par exemple.

Référence objet

par demain » 06 mars 2007, 15:19

Bonjour,

je me posé la question suivante :

Est-il possible de garder en mémoire des références sur des objets ou des objets complets comme peut le faire JAVA par exemple.

Si vous pouviez me donner quelques exemples concrets ou un lien vers un site qui traite du sujet.

Merci !