ArangoDB-PHP-Core API Documentation
  • Namespace
  • Class
  • Deprecated

Namespaces

  • frankmayer
    • ArangoDbPhpCore
      • Api
        • Rest
      • Config
      • Connectors
      • Plugins
      • Protocols
        • Http
      • TraitRepository

Classes

  • frankmayer\ArangoDbPhpCore\Api\Rest\Api
  • frankmayer\ArangoDbPhpCore\Api\Rest\Async
  • frankmayer\ArangoDbPhpCore\Api\Rest\Batch
  • frankmayer\ArangoDbPhpCore\Api\Rest\Collection
  • frankmayer\ArangoDbPhpCore\Api\Rest\Database
  • frankmayer\ArangoDbPhpCore\Api\Rest\Document
  • frankmayer\ArangoDbPhpCore\Api\Rest\DocumentBase
  • frankmayer\ArangoDbPhpCore\Api\Rest\Edge
  • frankmayer\ArangoDbPhpCore\Autoloader
  • frankmayer\ArangoDbPhpCore\Client
  • frankmayer\ArangoDbPhpCore\ClientOptions
  • frankmayer\ArangoDbPhpCore\Config\ConnectionOptions
  • frankmayer\ArangoDbPhpCore\Config\DefaultValues
  • frankmayer\ArangoDbPhpCore\Config\Endpoint
  • frankmayer\ArangoDbPhpCore\Config\UpdatePolicy
  • frankmayer\ArangoDbPhpCore\Connectors\AbstractHttpConnector
  • frankmayer\ArangoDbPhpCore\Plugins\Plugin
  • frankmayer\ArangoDbPhpCore\Plugins\PluginManager
  • frankmayer\ArangoDbPhpCore\Plugins\TestPlugin
  • frankmayer\ArangoDbPhpCore\Plugins\TracerPlugin
  • frankmayer\ArangoDbPhpCore\Protocols\Http\AbstractHttpRequest
  • frankmayer\ArangoDbPhpCore\Protocols\Http\HttpRequest
  • frankmayer\ArangoDbPhpCore\Protocols\Http\HttpResponse

Interfaces

  • frankmayer\ArangoDbPhpCore\Api\ApiInterface
  • frankmayer\ArangoDbPhpCore\Api\RestApiInterface
  • frankmayer\ArangoDbPhpCore\ClientInterface
  • frankmayer\ArangoDbPhpCore\ConnectorInterface
  • frankmayer\ArangoDbPhpCore\Plugins\PluginInterface
  • frankmayer\ArangoDbPhpCore\Protocols\Http\HttpConnectorInterface
  • frankmayer\ArangoDbPhpCore\Protocols\Http\HttpRequestInterface
  • frankmayer\ArangoDbPhpCore\Protocols\Http\HttpResponseInterface
  • frankmayer\ArangoDbPhpCore\Protocols\RequestInterface
  • frankmayer\ArangoDbPhpCore\Protocols\ResponseInterface

Traits

  • frankmayer\ArangoDbPhpCore\Api\Rest\DocumentTrait
  • frankmayer\ArangoDbPhpCore\Api\Rest\EdgeTrait
  • frankmayer\ArangoDbPhpCore\TraitRepository\ClientLogger

Exceptions

  • frankmayer\ArangoDbPhpCore\ClientException
  • frankmayer\ArangoDbPhpCore\ConnectionException
  • frankmayer\ArangoDbPhpCore\Exception
  • frankmayer\ArangoDbPhpCore\ServerException
  1 <?php
  2 /**
  3  * ArangoDB PHP Core Client: Client
  4  *
  5  * @author    Frank Mayer
  6  * @copyright Copyright 2013-2015, FRANKMAYER.NET, Athens, Greece
  7  */
  8 
  9 namespace frankmayer\ArangoDbPhpCore;
 10 
 11 use frankmayer\ArangoDbPhpCore\Connectors\AbstractHttpConnector;
 12 use frankmayer\ArangoDbPhpCore\Plugins\PluginManager;
 13 use frankmayer\ArangoDbPhpCore\Protocols\Http\HttpRequestInterface;
 14 use frankmayer\ArangoDbPhpCore\Protocols\RequestInterface;
 15 use frankmayer\ArangoDbPhpCore\Protocols\ResponseInterface;
 16 
 17 
 18 /**
 19  * The Client class.
 20  * This is the base operating class through which everything cooperates.
 21  * The class provides its own IOC Container for easy injection and instantiation of needed classes.
 22  *
 23  * @package   frankmayer\ArangoDbPhpCore
 24  */
 25 class Client
 26 {
 27     protected $iocContainerArray;
 28 
 29     /**
 30      * @var Plugins\PluginManager The plugin-manager for this client.
 31      */
 32     public $pluginManager;
 33     /**
 34      * @var ConnectorInterface $connector The connector instance to use, in order to connect to the server
 35      */
 36     public $connector;
 37     /**
 38      * @var array The client options. An array of client options.
 39      */
 40     public $clientOptions;
 41     /**
 42      * @var string The database path prefix to use. For example: '/_db/'. (defaults to '/_db/')
 43      */
 44     public $databasePathPrefix;
 45     /**
 46      * @var string The database to use. For example: 'my_database'
 47      */
 48     public $database;
 49     /**
 50      * @var string The the full database path. This is a concatenation of $databasePathPrefix & $database that happens on instantiation.
 51      */
 52     public $fullDatabasePath;
 53     /**
 54      * @var string The endpoint to connect to. For example: 'http://localhost:8529'
 55      */
 56     public $endpoint;
 57     /**
 58      * @var string The class name (including path) for example 'frankmayer\ArangoDbPhpCore\Connectors\Http\HttpRequest'
 59      */
 60     public $requestClass;
 61 
 62     /**
 63      * @var string The class name (including path) for example 'frankmayer\ArangoDbPhpCore\Connectors\Http\HttpResponse'
 64      */
 65     public $responseClass;
 66     /**
 67      * @var string The ArangoDB api version to signal
 68      */
 69     public $arangoDBApiVersion;
 70 
 71 
 72     /**
 73      * @param ConnectorInterface|AbstractHttpConnector $connector
 74      *
 75      * @param array                                    $clientOptions
 76      */
 77     public function __construct(ConnectorInterface $connector, $clientOptions = null)
 78     {
 79         $this->connector          = $connector;
 80         $this->connector->client  = $this;
 81         $this->clientOptions      = $clientOptions;
 82         $this->endpoint           = $this->clientOptions[ClientOptions::OPTION_ENDPOINT];
 83         $this->databasePathPrefix = $this->clientOptions[ClientOptions::OPTION_DATABASE_PATH_PREFIX];
 84         $this->database           = $this->clientOptions[ClientOptions::OPTION_DEFAULT_DATABASE];
 85         $this->fullDatabasePath   = $this->databasePathPrefix . $this->database;
 86 
 87         $this->requestClass  = $this->clientOptions[ClientOptions::OPTION_REQUEST_CLASS];
 88         $this->responseClass = $this->clientOptions[ClientOptions::OPTION_RESPONSE_CLASS];
 89 
 90         if (isset($this->clientOptions['plugins'])) {
 91             $this->pluginManager = new PluginManager($this,
 92                 isset($this->clientOptions['plugins']) ? $this->clientOptions['plugins'] : null,
 93                 isset($this->clientOptions['PluginManager']['options']) ? $this->clientOptions['PluginManager']['options'] : null);
 94         };
 95     }
 96 
 97 
 98     /**
 99      * @param null $plugins
100      *
101      * @return bool
102      */
103     public function setPluginsFromPluginArray($plugins = null)
104     {
105         return $this->pluginManager->setPluginsFromPluginArray($plugins);
106     }
107 
108 
109     /**
110      * @param       $eventName
111      * @param array $eventData
112      */
113     public function notifyPlugins($eventName, $eventData = [])
114     {
115         if ($this->pluginManager) {
116             $this->pluginManager->notifyPlugins($eventName, $eventData);
117         }
118     }
119 
120 
121     /**
122      * @param $request
123      *
124      * @return mixed
125      */
126     public function doRequest($request)
127     {
128         $responseClass = $this->responseClass;
129 
130         /** @var ResponseInterface $responseObject */
131         $responseObject = new $responseClass();
132 
133         return $responseObject->build($request);
134     }
135 
136 
137     /**
138      * Binding method for the IOC Container
139      *
140      * @param $type
141      * @param $closure
142      */
143     public function bind($type, \Closure $closure)
144     {
145         $this->iocContainerArray[$type] = $closure;
146     }
147 
148 
149     /**
150      * Make method for the IOC Container
151      *
152      * @param $type
153      *
154      * @throws ClientException
155      * @return mixed
156      */
157     public function make($type)
158     {
159         if (isset($this->iocContainerArray[$type])) {
160             $type = $this->iocContainerArray[$type];
161 
162             return $type();
163         }
164         throw new ClientException('No type registered with that name');
165     }
166 
167 
168     /**
169      * @param string $version
170      *
171      * @return $this
172      */
173     public function setArangoDBApiVersion($version)
174     {
175         $this->arangoDBApiVersion = $version;
176 
177         return $this;
178     }
179 
180 
181     /**
182      * @return string
183      */
184     public function getArangoDBApiVersion()
185     {
186         return $this->arangoDBApiVersion;
187     }
188 
189 
190     /**
191      * Set complete Client Options
192      *
193      * @param array $clientOptions
194      *
195      * @return $this
196      */
197     public function setClientOptions($clientOptions)
198     {
199         $this->clientOptions = $clientOptions;
200 
201         return $this;
202     }
203 
204 
205     /**
206      * @return array
207      */
208     public function getClientOptions()
209     {
210         return $this->clientOptions;
211     }
212 
213 
214     /**
215      * @param \frankmayer\ArangoDbPhpCore\ConnectorInterface $connector
216      *
217      * @return $this
218      */
219     public function setConnector(ConnectorInterface $connector)
220     {
221         $this->connector = $connector;
222 
223         return $this;
224     }
225 
226 
227     /**
228      * @return \frankmayer\ArangoDbPhpCore\ConnectorInterface
229      */
230     public function getConnector()
231     {
232         return $this->connector;
233     }
234 
235 
236     /**
237      * @param string $database
238      *
239      * @return $this
240      */
241     public function setDatabase($database)
242     {
243         $this->database = $database;
244 
245         return $this;
246     }
247 
248 
249     /**
250      * @return string
251      */
252     public function getDatabase()
253     {
254         return $this->database;
255     }
256 
257 
258     /**
259      * @param string $endpoint
260      *
261      * @return $this
262      */
263     public function setEndpoint($endpoint)
264     {
265         $this->endpoint = $endpoint;
266 
267         return $this;
268     }
269 
270 
271     /**
272      * @return string
273      */
274     public function getEndpoint()
275     {
276         return $this->endpoint;
277     }
278 
279 
280     /**
281      * @param \frankmayer\ArangoDbPhpCore\Plugins\PluginManager $pluginManager
282      *
283      * @return $this
284      */
285     public function setPluginManager($pluginManager)
286     {
287         $this->pluginManager = $pluginManager;
288 
289         return $this;
290     }
291 
292 
293     /**
294      * @return \frankmayer\ArangoDbPhpCore\Plugins\PluginManager
295      */
296     public function getPluginManager()
297     {
298         return $this->pluginManager;
299     }
300 
301 
302     /**
303      * @param RequestInterface|HttpRequestInterface $requestClass
304      *
305      * @return $this
306      */
307     public function setRequestClass($requestClass)
308     {
309         $this->requestClass = $requestClass;
310 
311         return $this;
312     }
313 
314 
315     /**
316      * @return RequestInterface
317      */
318     public function getRequestClass()
319     {
320         return $this->requestClass;
321     }
322 
323 
324     /**
325      * @return RequestInterface
326      */
327     public function getRequest()
328     {
329         return new $this->requestClass($this);
330     }
331 
332 
333    /**
334      * @return ResponseInterface
335      */
336     public function getResponse()
337     {
338         return new $this->responseClass($this);
339     }
340 
341 
342     /**
343      * @param ResponseInterface $responseClass
344      *
345      * @return $this
346      */
347     public function setResponseClass($responseClass)
348     {
349         $this->responseClass = $responseClass;
350 
351         return $this;
352     }
353 
354 
355     /**
356      * @return ResponseInterface
357      */
358     public function getResponseClass()
359     {
360         return $this->responseClass;
361     }
362 }
363 
ArangoDB-PHP-Core API Documentation API documentation generated by ApiGen