PDF rausgenommen
This commit is contained in:
100
msd2/phpBB3/vendor/ocramius/proxy-manager/docs/remote-object.md
vendored
Normal file
100
msd2/phpBB3/vendor/ocramius/proxy-manager/docs/remote-object.md
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
# Remote Object Proxy
|
||||
|
||||
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.
|
||||
|
||||
## What is remote object proxy ?
|
||||
|
||||
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.
|
||||
|
||||
## Adapters
|
||||
|
||||
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:
|
||||
|
||||
```sh
|
||||
$ php composer.phar require zendframework/zend-xmlrpc:2.*
|
||||
$ php composer.phar require zendframework/zend-json:2.*
|
||||
$ php composer.phar require zendframework/zend-soap:2.*
|
||||
```
|
||||
|
||||
ProxyManager comes with 3 adapters:
|
||||
|
||||
* `ProxyManager\Factory\RemoteObject\Adapter\XmlRpc`
|
||||
* `ProxyManager\Factory\RemoteObject\Adapter\JsonRpc`
|
||||
* `ProxyManager\Factory\RemoteObject\Adapter\Soap`
|
||||
|
||||
## Usage examples
|
||||
|
||||
RPC server side code (`xmlrpc.php` in your local webroot):
|
||||
|
||||
```php
|
||||
interface FooServiceInterface
|
||||
{
|
||||
public function foo();
|
||||
}
|
||||
|
||||
class Foo implements FooServiceInterface
|
||||
{
|
||||
/**
|
||||
* Foo function
|
||||
* @return string
|
||||
*/
|
||||
public function foo()
|
||||
{
|
||||
return 'bar remote';
|
||||
}
|
||||
}
|
||||
|
||||
$server = new Zend\XmlRpc\Server();
|
||||
$server->setClass('Foo', 'FooServiceInterface'); // my FooServiceInterface implementation
|
||||
$server->handle();
|
||||
```
|
||||
|
||||
Client side code (proxy) :
|
||||
|
||||
```php
|
||||
|
||||
interface FooServiceInterface
|
||||
{
|
||||
public function foo();
|
||||
}
|
||||
|
||||
$factory = new \ProxyManager\Factory\RemoteObjectFactory(
|
||||
new \ProxyManager\Factory\RemoteObject\Adapter\XmlRpc(
|
||||
new \Zend\XmlRpc\Client('https://localhost/xmlrpc.php')
|
||||
)
|
||||
);
|
||||
|
||||
$proxy = $factory->createProxy('FooServiceInterface');
|
||||
|
||||
var_dump($proxy->foo()); // "bar remote"
|
||||
```
|
||||
|
||||
## Implementing custom adapters
|
||||
|
||||
Your adapters must implement `ProxyManager\Factory\RemoteObject\AdapterInterface` :
|
||||
|
||||
```php
|
||||
interface AdapterInterface
|
||||
{
|
||||
/**
|
||||
* Call remote object
|
||||
*
|
||||
* @param string $wrappedClass
|
||||
* @param string $method
|
||||
* @param array $params
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function call($wrappedClass, $method, array $params = array());
|
||||
}
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
## Tuning performance for production
|
||||
|
||||
See [Tuning ProxyManager for Production](https://github.com/Ocramius/ProxyManager/blob/master/docs/tuning-for-production.md).
|
Reference in New Issue
Block a user