Files
doc-fr/reference/soap/soapserver/setpersistence.xml
Yannick Torres 7db7c4f479 sync with EN
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@331222 c90b9560-bf6c-de11-be94-00142212c4b1
2013-08-29 07:38:54 +00:00

156 lines
4.8 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 555841922ae2f9298d1affdbe0700cbf0a91d404 Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="soapserver.setpersistence" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>SoapServer::setPersistence</refname>
<refpurpose>Active le mode persistant de SoapServer</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>SoapServer::setPersistence</methodname>
<methodparam><type>int</type><parameter>mode</parameter></methodparam>
</methodsynopsis>
<para>
Cette fonction permet de changer la persistance d'un objet SoapServer entre les
requêtes. Elle permet de sauvegarder les données entre les requêtes, au moyen des
sessions PHP. Cette fonction n'a d'effet qu'après avoir exporté la liste des fonctions
au moyen de <methodname>SoapServer::setClass</methodname>.
</para>
<note>
<para>
La constante de persistence <constant>SOAP_PERSISTENCE_SESSION</constant>
rend uniquement les objets de la classe donnée persistants, mais non pas
les données statiques. Dans ce cas, <varname>$this->bar</varname>
au lieu de self::$bar.
</para>
</note>
<note>
<para>
<constant>SOAP_PERSISTENCE_SESSION</constant> serialise les données de l'objet entre
les requêtes. Dans le cas des ressources, (par exemple <classname>PDO</classname>),
<link linkend="object.wakeup">__wakeup()</link> et <link linkend="object.sleep">__sleep()</link> devraient être
utilisées.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Une des constantes suivantes :
</para>
<para>
<constant>SOAP_PERSISTENCE_REQUEST</constant> - Les données de SoapServer
ne sont pas persistantes entre les requêtes. C'est le comportement par
<emphasis role="bold">défaut</emphasis> de tout objet SoapServer après
appel à setClass().
</para>
<para>
<constant>SOAP_PERSISTENCE_SESSION</constant> - Les données de SoapServer
persistent entre les requêtes. Ceci est réalisé en linéarisant les données de
la classe SoapServer dans <varname>$_SESSION['_bogus_session_name']</varname>,
et ainsi <function>session_start</function> doit être appelée avant de passer
sous ce mode de persistance.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemple <function>SoapServer::setPersistence</function></title>
<programlisting role="php">
<![CDATA[
<?php
class MyFirstPersistentSoapServer {
private $resource; // (Par exemple PDO, mysqli, etc..)
public $myvar1;
public $myvar2;
public function __construct() {
$this->__wakeup(); // On appelle notre wakeup pour relancer notre ressource
}
public function __wakeup() {
$this->resource = CodeToStartOurResourceUp();
}
public function __sleep() {
// On s'assure d'enlever $resource ici, ainsi nos données peuvent persister en session
// Si on oublie, la désérialisation lors de la prochaine requête échouera et notre objet
// SoapObject ne sera donc pas persistant entre les requêtes.
return array('myvar1','myvar2');
}
}
try {
session_start();
$server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('MyFirstPersistentSoapServer');
// setPersistence() DOIT être appelée après setClass(), car le comportement de setClass()
// affecte SESSION_PERSISTENCE_REQUEST.
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} catch(SoapFault $e) {
error_log("SOAP ERROR: ". $e->getMessage());
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>SoapServer::setClass</methodname></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->