mirror of
https://github.com/php/doc-fr.git
synced 2026-03-23 22:52:18 +01:00
[Sync EN] Move __sleep()/__wakeup() after __serialize()/__unserialize() (#2669)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 5e15a6c3e4d5819102361ae78e73c90a06238c8a Maintainer: yannick Status: ready -->
|
||||
<!-- EN-Revision: 8f51247cb4631b29686f867bd904dfe5b2678074 Maintainer: yannick Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<sect1 xml:id="language.oop5.magic" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Méthodes magiques</title>
|
||||
@@ -25,10 +25,10 @@
|
||||
<link linkend="object.set">__set()</link>,
|
||||
<link linkend="object.isset">__isset()</link>,
|
||||
<link linkend="object.unset">__unset()</link>,
|
||||
<link linkend="object.sleep">__sleep()</link>,
|
||||
<link linkend="object.wakeup">__wakeup()</link>,
|
||||
<link linkend="object.serialize">__serialize()</link>,
|
||||
<link linkend="object.unserialize">__unserialize()</link>,
|
||||
<link linkend="object.sleep">__sleep()</link>,
|
||||
<link linkend="object.wakeup">__wakeup()</link>,
|
||||
<link linkend="object.tostring">__toString()</link>,
|
||||
<link linkend="object.invoke">__invoke()</link>,
|
||||
<link linkend="object.set-state">__set_state()</link>,
|
||||
@@ -64,101 +64,6 @@
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
<sect2 xml:id="language.oop5.magic.sleep">
|
||||
<title>
|
||||
<link linkend="object.sleep">__sleep()</link> et
|
||||
<link linkend="object.wakeup">__wakeup()</link>
|
||||
</title>
|
||||
|
||||
<methodsynopsis xml:id="object.sleep">
|
||||
<modifier>public</modifier> <type>array</type><methodname>__sleep</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<methodsynopsis xml:id="object.wakeup">
|
||||
<modifier>public</modifier> <type>void</type><methodname>__wakeup</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
|
||||
<para>
|
||||
<function>serialize</function> vérifie si la classe a une méthode avec le
|
||||
nom magique <link linkend="object.sleep">__sleep()</link>.
|
||||
Si c'est le cas, cette méthode sera exécutée avant toute sérialisation. Elle peut
|
||||
nettoyer l'objet, et elle est supposée retourner un tableau avec les noms de toutes
|
||||
les variables de l'objet qui doivent être sérialisées.
|
||||
Si la méthode ne retourne rien, alors &null; sera sérialisé, et une alerte de type
|
||||
<constant>E_NOTICE</constant> sera émise.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Il n'est pas possible pour <link linkend="object.sleep">__sleep()</link> de retourner
|
||||
des noms de propriétés privées des classes parentes. Le faire
|
||||
résultera en une erreur de niveau <constant>E_NOTICE</constant>.
|
||||
Utiliser <link linkend="object.serialize">__serialize()</link> à la place.
|
||||
</para>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
À partir de PHP 8.0.0, retourner une valeur qui n'est pas un tableau depuis
|
||||
<link linkend="object.sleep">__sleep()</link> émet un avertissement.
|
||||
Auparavant une notice était émise.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
Le but avoué de <link linkend="object.sleep">__sleep()</link> est de valider des données en attente
|
||||
ou d'effectuer des opérations de nettoyage.
|
||||
De plus, cette fonction est utile si un objet très large n'a pas besoin
|
||||
d'être sauvegardé dans sa totalité.
|
||||
</para>
|
||||
<para>
|
||||
Réciproquement, la fonction <function>unserialize</function> vérifie
|
||||
la présence d'une méthode dont le nom est le nom magique
|
||||
<link linkend="object.wakeup">__wakeup()</link>. Si elle est présente, cette fonction
|
||||
peut reconstruire toute ressource que l'objet pourrait posséder.
|
||||
</para>
|
||||
<para>
|
||||
Le but avoué de <link linkend="object.wakeup">__wakeup()</link> est de rétablir
|
||||
toute connexion de base de données qui aurait été perdue
|
||||
durant la sérialisation et d'effectuer des tâches de réinitialisation.
|
||||
</para>
|
||||
<example>
|
||||
<title>Utilisation de sleep() et wakeup()</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class Connection
|
||||
{
|
||||
protected $link;
|
||||
private $dsn, $username, $password;
|
||||
|
||||
public function __construct($dsn, $username, $password)
|
||||
{
|
||||
$this->dsn = $dsn;
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
$this->connect();
|
||||
}
|
||||
|
||||
private function connect()
|
||||
{
|
||||
$this->link = new PDO($this->dsn, $this->username, $this->password);
|
||||
}
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
return array('dsn', 'username', 'password');
|
||||
}
|
||||
|
||||
public function __wakeup()
|
||||
{
|
||||
$this->connect();
|
||||
}
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="language.oop5.magic.serialize">
|
||||
<title>
|
||||
<link linkend="object.serialize">__serialize()</link> et
|
||||
@@ -268,6 +173,112 @@ class Connection
|
||||
</example>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="language.oop5.magic.sleep">
|
||||
<title>
|
||||
<link linkend="object.sleep">__sleep()</link> et
|
||||
<link linkend="object.wakeup">__wakeup()</link>
|
||||
</title>
|
||||
|
||||
<warning>
|
||||
<simpara>
|
||||
Ce mécanisme de sérialisation est soft-deprecated à partir de PHP 8.5.0.
|
||||
Il est maintenu pour la rétrocompatibilité.
|
||||
Cependant, le code nouveau et existant devrait migrer vers l'utilisation des
|
||||
méthodes magiques
|
||||
<link linkend="object.serialize">__serialize()</link> et
|
||||
<link linkend="object.unserialize">__unserialize()</link>
|
||||
à la place.
|
||||
</simpara>
|
||||
</warning>
|
||||
|
||||
<methodsynopsis xml:id="object.sleep">
|
||||
<modifier>public</modifier> <type>array</type><methodname>__sleep</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
<methodsynopsis xml:id="object.wakeup">
|
||||
<modifier>public</modifier> <type>void</type><methodname>__wakeup</methodname>
|
||||
<void/>
|
||||
</methodsynopsis>
|
||||
|
||||
<para>
|
||||
<function>serialize</function> vérifie si la classe a une méthode avec le
|
||||
nom magique <link linkend="object.sleep">__sleep()</link>.
|
||||
Si c'est le cas, cette méthode sera exécutée avant toute sérialisation. Elle peut
|
||||
nettoyer l'objet, et elle est supposée retourner un tableau avec les noms de toutes
|
||||
les variables de l'objet qui doivent être sérialisées.
|
||||
Si la méthode ne retourne rien, alors &null; sera sérialisé, et une alerte de type
|
||||
<constant>E_NOTICE</constant> sera émise.
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
Il n'est pas possible pour <link linkend="object.sleep">__sleep()</link> de retourner
|
||||
des noms de propriétés privées des classes parentes. Le faire
|
||||
résultera en une erreur de niveau <constant>E_NOTICE</constant>.
|
||||
Utiliser <link linkend="object.serialize">__serialize()</link> à la place.
|
||||
</para>
|
||||
</note>
|
||||
<note>
|
||||
<para>
|
||||
À partir de PHP 8.0.0, retourner une valeur qui n'est pas un tableau depuis
|
||||
<link linkend="object.sleep">__sleep()</link> émet un avertissement.
|
||||
Auparavant une notice était émise.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
Le but avoué de <link linkend="object.sleep">__sleep()</link> est de valider des données en attente
|
||||
ou d'effectuer des opérations de nettoyage.
|
||||
De plus, cette fonction est utile si un objet très large n'a pas besoin
|
||||
d'être sauvegardé dans sa totalité.
|
||||
</para>
|
||||
<para>
|
||||
Réciproquement, la fonction <function>unserialize</function> vérifie
|
||||
la présence d'une méthode dont le nom est le nom magique
|
||||
<link linkend="object.wakeup">__wakeup()</link>. Si elle est présente, cette fonction
|
||||
peut reconstruire toute ressource que l'objet pourrait posséder.
|
||||
</para>
|
||||
<para>
|
||||
Le but avoué de <link linkend="object.wakeup">__wakeup()</link> est de rétablir
|
||||
toute connexion de base de données qui aurait été perdue
|
||||
durant la sérialisation et d'effectuer des tâches de réinitialisation.
|
||||
</para>
|
||||
<example>
|
||||
<title>Utilisation de sleep() et wakeup()</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
class Connection
|
||||
{
|
||||
protected $link;
|
||||
private $dsn, $username, $password;
|
||||
|
||||
public function __construct($dsn, $username, $password)
|
||||
{
|
||||
$this->dsn = $dsn;
|
||||
$this->username = $username;
|
||||
$this->password = $password;
|
||||
$this->connect();
|
||||
}
|
||||
|
||||
private function connect()
|
||||
{
|
||||
$this->link = new PDO($this->dsn, $this->username, $this->password);
|
||||
}
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
return array('dsn', 'username', 'password');
|
||||
}
|
||||
|
||||
public function __wakeup()
|
||||
{
|
||||
$this->connect();
|
||||
}
|
||||
}?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="language.oop5.magic.tostring">
|
||||
<title><link linkend="object.tostring">__toString()</link></title>
|
||||
<methodsynopsis xml:id="object.tostring">
|
||||
|
||||
Reference in New Issue
Block a user