Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
remote-object.html
001 <!DOCTYPE html>
002 <html class="no-js" id="top">
003 <head>
004 <title>ProxyManager - Remote object</title>
005
006 <meta name="description" content="A proxyManager write in php" />
007 <meta name="keywords" content="ProxyManager, proxy, manager, ocramius, Marco Pivetta, php, remote object" />
008 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
009 <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600' rel='stylesheet' type='text/css'>
010 <link href="css/styles.css" rel="stylesheet" />
011 <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/styles/default.min.css">
012 <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/highlight.min.js"></script>
013 <script>hljs.initHighlightingOnLoad();</script>
014 <link rel="shortcut icon" href="favicon.ico">
015 </head>
016 <body>
017
018 <header class="site-header">
019 <div class="container">
020 <h1><a href="index.html"><img alt="ProxyManager" src="img/block.png" /></a></h1>
021
022 <nav class="main-nav" role="navigation">
023 <ul>
024 <li><a href="https://github.com/Ocramius/ProxyManager" target="_blank">Github</a>
025 <div class="bcms-clearfix"></div>
026 </li>
027 </ul>
028 </nav>
029 </div>
030 </header>
031 <main role="main">
032 <section class="component-content">
033
034 <div class="component-demo" id="live-demo">
035 <div class="container">
036 <div class="main-wrapper" style="text-align: right">
037 <iframe src="http://ghbtns.com/github-btn.html?user=ocramius&repo=ProxyManager&type=fork&count=true&size=large"
038 allowtransparency="true" frameborder="0" scrolling="0" width="310" height="40"></iframe>
039
040 <iframe src="http://ghbtns.com/github-btn.html?user=ocramius&repo=ProxyManager&type=watch&count=true&size=large"
041 allowtransparency="true" frameborder="0" scrolling="0" width="200" height="40"></iframe>
042
043 </div>
044 <div class="bcms-clearfix bcms-clearfix"></div>
045 </div>
046 </div>
047 <div class="component-info">
048 <div class="container">
049 <aside class="sidebar">
050 <nav class="spy-nav">
051 <ul>
052 <li><a href="index.html">Intro</a></li>
053 <li><a href="virtual-proxy.html">Virtual Proxy</a></li>
054 <li><a href="null-object.html">Null Objects</a></li>
055 <li><a href="ghost-object.html">Ghost Objects</a></li>
056 <li><a href="remote-object.html">Remote Object</a></li>
057 <li><a href="contributing.html">Contributing</a></li>
058 <li><a href="credits.html">Credits</a></li>
059 <li><a href="copyright.html">Copyright</a></li>
060 </ul>
061 </nav>
062 <div class="bcms-clearfix bcms-clearfix"></div>
063 <a class="btn btn-action btn-full download-component"
064 href="download.html">Download</a>
065 <div class="bcms-clearfix"></div>
066 </aside>
067
068 <div class="content">
069 <div class="bcms-clearfix"></div>
070 <h3 class="section-title">Remote Object Proxy</h3>
071
072 <p>The remote object implementation is a mechanism that enables an local object to control an other object on an other server. Each call method on the local object will do a network call to get information or execute operations on the remote object.</p>
073 <hr />
074
075 <h3 class="section-title">What is remote object proxy ?</h3>
076
077 <p>A remote object is based on an interface. The remote interface defines the API that a consumer can call. This interface must be implemented both by the client and the RPC server.</p>
078 <hr />
079
080 <h3 class="section-title">Adapters</h3>
081
082 <p>ZendFramework's RPC components (XmlRpc, JsonRpc & Soap) can be used easily with the remote object. You will need to require the one you need via composer, though:</p>
083
084 <pre>
085 <code class="sh">
086 $ php composer.phar require zendframework/zend-xmlrpc:2.*
087 $ php composer.phar require zendframework/zend-json:2.*
088 $ php composer.phar require zendframework/zend-soap:2.*
089 </code>
090 </pre>
091
092 <p>ProxyManager comes with 3 adapters:</p>
093
094 <ul>
095 <li><code>ProxyManager\Factory\RemoteObject\Adapter\XmlRpc</code></li>
096 <li><code>ProxyManager\Factory\RemoteObject\Adapter\JsonRpc</code></li>
097 <li><code>ProxyManager\Factory\RemoteObject\Adapter\Soap</code></li>
098 </ul>
099
100 <hr />
101
102 <h3 class="section-title">Usage examples</h3>
103
104 <p>RPC server side code (<code>xmlrpc.php</code> in your local webroot):</p>
105
106 <pre>
107 <code class="php">
108 interface FooServiceInterface
109 {
110 public function foo();
111 }
112
113 class Foo implements FooServiceInterface
114 {
115 /**
116 * Foo function
117 * @return string
118 */
119 public function foo()
120 {
121 return 'bar remote';
122 }
123 }
124
125 $server = new Zend\XmlRpc\Server();
126 $server->setClass('Foo', 'FooServiceInterface'); // my FooServiceInterface implementation
127 $server->handle();
128 </code>
129 </pre>
130
131 <p>Client side code (proxy) :</p>
132
133 <pre>
134 <code class="php">
135 interface FooServiceInterface
136 {
137 public function foo();
138 }
139
140 $factory = new \ProxyManager\Factory\RemoteObjectFactory(
141 new \ProxyManager\Factory\RemoteObject\Adapter\XmlRpc(
142 new \Zend\XmlRpc\Client('https://localhost/xmlrpc.php')
143 )
144 );
145
146 $proxy = $factory->createProxy('FooServiceInterface');
147
148 var_dump($proxy->foo()); // "bar remote"
149 </code>
150 </pre>
151 <hr />
152
153 <h3 class="section-title">Implementing custom adapters</h3>
154
155 <p>Your adapters must implement <code>ProxyManager\Factory\RemoteObject\AdapterInterface</code> :</p>
156
157 <pre>
158 <code class="php">
159 interface AdapterInterface
160 {
161 /**
162 * Call remote object
163 *
164 * @param string $wrappedClass
165 * @param string $method
166 * @param array $params
167 *
168 * @return mixed
169 */
170 public function call($wrappedClass, $method, array $params = array());
171 }
172 </code>
173 </pre>
174
175 <p>It is very easy to create your own implementation (for RESTful web services, for example). Simply pass your own adapter instance to your factory at construction time</p>
176
177 <p>Tuning performance for production</p>
178
179 <p>See <a href="production.html">Tuning ProxyManager for Production.</a></p>
180
181 </main>
182
183 <footer class="site-footer" role="contentinfo">
184 <div class="container">
185 <div class="footer-logos">
186 <ul>
187 <li><a href="index.html">Intro</a> | </li>
188 <li><a href="virtual-proxy.html">Virtual Proxy</a> | </li>
189 <li><a href="null-object.html">Null Objects</a> | </li>
190 <li><a href="ghost-object.html">Ghost Objects</a> | </li>
191 <li><a href="remote-object.html">Remote Object</a> | </li>
192 <li><a href="contributing.html">Contributing</a> | </li>
193 <li><a href="credits.html">Credits</a> | </li>
194 <li><a href="copyright.html">Copyright</a></li>
195 </ul>
196 </div>
197 </div>
198
199 <div class="bcms-clearfix"></div>
200 </footer>
201 <div class="bcms-clearfix"></div>
202 </body>
203 </html>
204