File: setpersistence.xml

package info (click to toggle)
php-doc 20241205~git.dfcbb86%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 70,956 kB
  • sloc: xml: 968,269; php: 23,883; javascript: 671; sh: 177; makefile: 37
file content (144 lines) | stat: -rw-r--r-- 4,809 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<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>Sets SoapServer persistence mode</refpurpose>
 </refnamediv>

 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis role="SoapServer">
   <modifier>public</modifier> <type>void</type><methodname>SoapServer::setPersistence</methodname>
   <methodparam><type>int</type><parameter>mode</parameter></methodparam>
  </methodsynopsis>
  <para> 
   This function allows changing the persistence state of a SoapServer object between
   requests. This function allows saving data between requests utilizing PHP sessions.  This method
   only has an affect on a SoapServer after it has exported functions utilizing <methodname>SoapServer::setClass</methodname>. 
  </para>
   <note>
    <para> 
     The persistence of <constant>SOAP_PERSISTENCE_SESSION</constant> makes only
     objects of the given class persistent, but not the class static data. In this 
     case, use <varname>$this->bar</varname> instead of self::$bar. 
    </para>
   </note>
   <note>
    <para>
     <constant>SOAP_PERSISTENCE_SESSION</constant> serializes data on the class object between requests. In order to properly utilize resources (e.g. <classname>PDO</classname>), <link linkend="object.wakeup">__wakeup()</link> and <link linkend="object.sleep">__sleep()</link> magic methods should be utilized. 
    </para>  
  </note>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>mode</parameter></term>
     <listitem>
      <para>
       One of the <constant>SOAP_PERSISTENCE_<replaceable>*</replaceable></constant> constants.
      </para>
      <para>
       <constant>SOAP_PERSISTENCE_REQUEST</constant> - SoapServer data does not persist between
       requests. This is the <emphasis role="bold">default</emphasis> behavior of any SoapServer
       object after setClass is called. 
      </para>
      <para>
       <constant>SOAP_PERSISTENCE_SESSION</constant> - SoapServer data persists between requests.
       This is accomplished by serializing the SoapServer class data into
       <varname>$_SESSION['_bogus_session_name']</varname>, because of this 
       <function>session_start</function> must be called before this persistence mode is set. 
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.void;
  </para>
 </refsect1>
 
 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title><function>SoapServer::setPersistence</function> example</title>
    <programlisting role="php">
<![CDATA[
<?php
 class MyFirstPersistentSoapServer {
     private $resource; // (Such as PDO, mysqli, etc..)
     public $myvar1;
     public $myvar2;

     public function __construct() {
         $this->__wakeup(); // We're calling our wakeup to handle starting our resource
     }

     public function __wakeup() {
         $this->resource = CodeToStartOurResourceUp();
     }

     public function __sleep() {
         // We make sure to leave out $resource here, so our session data remains persistent
         // Failure to do so will result in the failure during the unserialization of data
         // on the next request; thus, our SoapObject would not be persistent across requests.
         return array('myvar1','myvar2');
     }
 }

 try {
     session_start();
     $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
     $server->setClass('MyFirstPersistentSoapServer');
     // setPersistence MUST be called after setClass, because setClass's
     // behavior sets SESSION_PERSISTENCE_REQUEST upon enacting the method.
     $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
-->