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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

index.html

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 11.01 KiB


001  <!DOCTYPE html>
002  <html class="no-js" id="top">
003  <head>
004      <title>ProxyManager</title>
005   
006      <meta name="description" content="A proxyManager write in php" />
007      <meta name="keywords" content="ProxyManager, proxy, manager, ocramius, Marco Pivetta, php" />
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"><div class="page-title-wrapper">
033  <div class="container">
034      <img src="https://github.com/Ocramius/ProxyManager/raw/master/proxy-manager.png">
035      <h2 class="page-title">Proxy Manager</h2>
036  </div>
037  </div>
038   
039  <div class="component-demo" id="live-demo">
040      <div class="container">
041              <div class="main-wrapper" style="text-align: right">
042                  <iframe src="http://ghbtns.com/github-btn.html?user=ocramius&amp;repo=ProxyManager&amp;type=fork&amp;count=true&amp;size=large"
043    allowtransparency="true" frameborder="0" scrolling="0" width="310" height="40"></iframe>
044   
045                  <iframe src="http://ghbtns.com/github-btn.html?user=ocramius&amp;repo=ProxyManager&amp;type=watch&amp;count=true&amp;size=large"
046    allowtransparency="true" frameborder="0" scrolling="0" width="200" height="40"></iframe>
047   
048              </div>
049          <div class="bcms-clearfix bcms-clearfix"></div>
050      </div>
051  </div>
052  <div class="component-info">
053  <div class="container">
054   
055  <aside class="sidebar">
056      <nav class="spy-nav">
057          <ul>
058              <li><a href="index.html">Intro</a></li>
059              <li><a href="virtual-proxy.html">Virtual Proxy</a></li>
060              <li><a href="null-object.html">Null Objects</a></li>
061              <li><a href="ghost-object.html">Ghost Objects</a></li>
062              <li><a href="remote-object.html">Remote Object</a></li>
063              <li><a href="contributing.html">Contributing</a></li>
064              <li><a href="credits.html">Credits</a></li>
065              <li><a href="copyright.html">Copyright</a></li>
066          </ul>
067      </nav>
068  <div class="bcms-clearfix bcms-clearfix"></div>
069  <a class="btn btn-action btn-full download-component"
070      href="download.html">Download</a>
071      <div class="bcms-clearfix"></div>
072  </aside>
073   
074  <div class="content">
075      <h3>Proxy Manager</h3>
076      <p>This library aims at providing abstraction for generating various kinds of <a href="http://ocramius.github.io/presentations/proxy-pattern-in-php/" target="_blank">proxy classes</a>.</p>
077      <p>If you want to learn more about proxy pattern watch this video:</p>
078   
079      <iframe width="640" height="390" src="//www.youtube.com/embed/Ka8wlV8M6Vg" frameborder="0" allowfullscreen></iframe>
080  <hr />
081      <div class="bcms-clearfix"></div>
082      <h3 class="section-title">Installation</h3>
083      <p>The suggested installation method is via <a href="https://getcomposer.org/" target="_blank">composer</a>.</p>
084      <pre><code class="sh">php composer.phar require ocramius/proxy-manager:1.0.*</code></pre>
085  <hr />
086   
087      <h3 class="section-title" id="virtualproxy">Lazy Loading Value Holders (Virtual Proxy)</h3>
088   
089      <p>ProxyManager can generate
090          <a href="http://www.martinfowler.com/eaaCatalog/lazyLoad.html" target="_blank">lazy loading value holders</a>,
091           which are virtual proxies capable of saving performance and memory for objects that
092          require a lot of dependencies or CPU cycles to be loaded:
093          particularly useful when you may not always need the object,
094          but are constructing it anyways.</p>
095   
096      <pre>
097          <code class="php">
098  $factory = new \ProxyManager\Factory\LazyLoadingValueHolderFactory();
099   
100  $proxy = $factory->createProxy(
101      'MyApp\HeavyComplexObject',
102      function (&amp; $wrappedObject, $proxy, $method, $parameters, &amp; $initializer) {
103          $wrappedObject = new HeavyComplexObject(); // instantiation logic here
104          $initializer   = null; // turning off further lazy initialization
105   
106          return true;
107      }
108  );
109   
110  $proxy->doFoo();
111          </code>
112      </pre>
113   
114      <p>See the <a href="virtual-proxy.html">complete documentation about lazy loading value holders</a>.</p>
115  <hr />
116   
117      <h3 class="section-title">Access Interceptor Value Holder</h3>
118   
119      <p>An access interceptor value holder is a smart reference that allows you to execute
120       logic before and after a particular method is executed or a particular property is
121       accessed, and it allows to manipulate parameters and return values depending on
122       your needs.</p>
123   
124      <pre>
125          <code class="php">
126  $factory = new \ProxyManager\Factory\AccessInterceptorValueHolderFactory();
127   
128  $proxy = $factory->createProxy(
129      new \My\Db\Connection(),
130      array('query' => function () { echo "Query being executed!\n"; }),
131      array('query' => function () { echo "Query completed!\n"; })
132  );
133   
134  $proxy->query(); // produces "Query being executed!\nQuery completed!\n"
135          </code>
136      </pre>
137   
138      <p>See the <a href="access-interceptor-value-holder-proxy.html">complete documentation about access interceptor value holders</a>.</p>
139  <hr />
140   
141      <h3 class="section-title">Access Interceptor Scope Localizer</h3>
142   
143      <p>An access interceptor scope localizer works exactly like an access interceptor
144       value holder, but it is safe to use to proxy fluent interfaces.</p>
145   
146      <p>See the <a href="access-interceptor-scope-localizer-proxy.html">complete documentation about access interceptor scope localizer</a>.</p>
147  <hr />
148   
149   
150      <h3 class="section-title">Null Objects</h3>
151   
152      <p>A Null Object proxy implements the null object pattern.</p>
153   
154      <p>This kind of proxy allows you to have fallback logic in case loading of the wrapped value failed.</p>
155      <pre>
156          <code class="php">
157  $factory = new \ProxyManager\Factory\NullObjectFactory();
158   
159  $proxy = $factory->createProxy('My\EntityObject');
160   
161  $proxy->getName(); // empty return
162          </code>
163      </pre>
164   
165      <p>A Null Object Proxy can be created from an object, a class name or an interface name:</p>
166      <pre>
167          <code class="php">
168  $factory = new \ProxyManager\Factory\NullObjectFactory();
169   
170  $proxy = $factory->createProxy('My\EntityObjectInterface');
171  $proxy->getName(); // empty return
172   
173  $proxy = $factory->createProxy($entity); // created from object
174  $proxy->getName(); // empty return
175          </code>
176      </pre>
177   
178      <p>See the <a href="null-object.html">complete documentation about null object proxy</a>.</p>
179   
180  <hr />
181   
182      <h3 class="section-title">Ghost Objects</h3>
183   
184      <p>Similar to value holder, a ghost object is usually created to handle lazy loading.</p>
185   
186      <p>The difference between a value holder and a ghost object is that the ghost
187          object does not contain a real instance of the required object, but handles
188          lazy loading by initializing its own inherited properties.</p>
189   
190      <p>ProxyManager can generate
191          <a href="http://www.martinfowler.com/eaaCatalog/lazyLoad.html" target="_blank">lazy loading ghost objects</a>,
192           which are proxies used to save performance and memory for large datasets and
193           graphs representing relational data. Ghost objects are particularly useful
194           when building data-mappers.</p>
195   
196      <p>Additionally, the overhead introduced by ghost objects is very low when
197          compared to the memory and performance overhead caused by virtual proxies.</p>
198   
199      <pre>
200          <code class="php">
201  $factory = new \ProxyManager\Factory\LazyLoadingGhostFactory();
202   
203  $proxy = $factory->createProxy(
204      'MyApp\HeavyComplexObject',
205      function ($proxy, $method, $parameters, & $initializer) {
206          $initializer   = null; // turning off further lazy initialization
207   
208          // modify the proxy instance
209          $proxy->setFoo('foo');
210          $proxy->setBar('bar');
211   
212          return true;
213      }
214  );
215   
216  $proxy->doFoo();
217          </code>
218      </pre>
219   
220      <p>See the <a href="ghost-object.html">complete documentation about lazy loading ghost objects</a>.</p>
221   
222  <hr />
223   
224      <h3 class="section-title">Remote Object</h3>
225   
226      <p>A remote object proxy is an object that is located on a different system,
227          but is used as if it was available locally. There's various possible
228          remote proxy implementations, which could be based on xmlrpc/jsonrpc/soap/dnode/etc.</p>
229   
230      <p>This example uses the XML-RPC client of Zend Framework 2:</p>
231   
232      <pre>
233          <code class="php">
234  interface FooServiceInterface
235  {
236      public function foo();
237  }
238   
239  $factory = new \ProxyManager\Factory\RemoteObjectFactory(
240      new \ProxyManager\Factory\RemoteObject\Adapter\XmlRpc(
241          new \Zend\XmlRpc\Client('https://example.com/rpc-endpoint')
242      )
243  );
244   
245  // proxy is your remote implementation
246  $proxy = $factory->createProxy('FooServiceInterface');
247   
248  var_dump($proxy->foo());
249          </code>
250      </pre>
251   
252      <p>See the <a href="remote-object.html">complete documentation about remote objects</a>.</p>
253  <hr />
254   
255   
256  <h3 class="section-title">Contributing</h3>
257      <p>Please read the <a href="contributing.html">CONTRIBUTING</a> contents if you wish to help out!</p>
258   
259  <hr />
260   
261  <h3 class="section-title">Credits</h3>
262   
263      <p>The idea was originated by a <a href="http://marco-pivetta.com/proxy-pattern-in-php/" target="_blank">talk about Proxies in PHP OOP</a> that I gave at the <a href="https://twitter.com/phpugffm" target="_blank">@phpugffm</a> in January 2013.</p>
264   
265   
266      <div class="bcms-clearfix"></div>
267   
268      </div>
269      </div>
270  </div>
271   
272   
273  </main>
274   
275      <footer class="site-footer" role="contentinfo">
276          <div class="container">
277              <div class="footer-logos">
278                  <ul>
279                      <li><a href="index.html">Intro</a> | </li>
280                      <li><a href="virtual-proxy.html">Virtual Proxy</a> | </li>
281                      <li><a href="null-object.html">Null Objects</a> | </li>
282                      <li><a href="ghost-object.html">Ghost Objects</a> | </li>
283                      <li><a href="remote-object.html">Remote Object</a> | </li>
284                      <li><a href="contributing.html">Contributing</a> | </li>
285                      <li><a href="credits.html">Credits</a> | </li>
286                      <li><a href="copyright.html">Copyright</a></li>
287                  </ul>
288              </div>
289          </div>
290   
291          <div class="bcms-clearfix"></div>
292      </footer>
293      <div class="bcms-clearfix"></div>
294      </body>
295  </html>
296