# CloudObjects PHP SDK [![Latest Stable Version](https://poser.pugx.org/cloudobjects/sdk/v/stable)](https://packagist.org/packages/cloudobjects/sdk) [![Total Downloads](https://poser.pugx.org/cloudobjects/sdk/downloads)](https://packagist.org/packages/cloudobjects/sdk) [![buddy branch](https://app.buddy.works/cloudobjects/php-sdk/repository/branch/main/badge.svg?token=52ae28bf71dbbd3dde018f3f3e7caafa04f95bdb451b3dfca547414ec7a01739 "buddy branch")](https://app.buddy.works/cloudobjects/php-sdk/repository/branch/main) The CloudObjects PHP SDK provides simple access to [CloudObjects](https://cloudobjects.io/) from PHP-based applications. It wraps the [Object API](https://coid.link/cloudobjects.io/ObjectAPI/1.0) to fetch objects from the CloudObjects Core database and provides object-based access to their RDF description. A two-tiered caching mechanism (in-memory and Doctrine cache drivers) is included. The SDK also contains a helper class to validate COIDs. ## Installation The SDK is [distributed through packagist](https://packagist.org/packages/cloudobjects/sdk). Add `cloudobjects/sdk` to the `require` section of your `composer.json`, like this: ````json { "require": { "cloudobjects/sdk" : ">=0.7" } } ```` ## Retrieving Objects In order to retrieve objects from the CloudObjects Core database you need to create an instance of `CloudObjects\SDK\ObjectRetriever`. Then you can call `getObject()`. This method returns an `ML\JsonLD\Node` instance or `null` if the object is not found. You can use the object interface of the [JsonLD library](https://github.com/lanthaler/JsonLD/) to read the information from the object. Here's a simple example: ````php use ML\IRI\IRI; use CloudObjects\SDK\ObjectRetriever; /* ... */ $retriever = new ObjectRetriever(); $object = $this->retriever->getObject(new IRI('coid://cloudobjects.io')); if (isset($object)) echo $object->getProperty('http://www.w3.org/2000/01/rdf-schema#label')->getValue(); else echo "Object not found."; ```` ### Configuration You can pass an array of configuration options to the ObjectRetriever's constructor: | Option | Description | Default | |---|---|---| | `cache_provider` | The type of cache used. Currently supports `redis`, `file` and `none`. | `none` | | `cache_prefix` | A prefix used for cache IDs. Normally this should not be set but might be necessary on shared caches. | `clobj:` | | `cache_ttl` | Determines how long objects can remain cached. | `60` | | `auth_ns` | The namespace of the service that this retriever acts for. If not set the API is accessed anonymously. | `null` | | `auth_secret` | The shared secret between the namespace in `auth_ns` and `cloudobjects.io` for authenticated. If not set the API is accessed anonymously. | `null` | #### For `redis` cache: | Option | Description | Default | |---|---|---| | `cache_provider.redis.host` | The hostname or IP of the Redis instance. | `127.0.0.1` | | `cache_provider.redis.port` | The port number of the Redis instance. | `6379` | #### For `file` cache: | Option | Description | Default | |---|---|---| | `cache_provider.file.directory` | The directory to store cache data in. | The system's temporary directory. | ## License The PHP SDK is licensed under Mozilla Public License (see LICENSE file).