composer require setono/client
If you don't use your own client id generation strategy, you should also install either the symfony/uid or the ramsey/uuid package:
# If you want to use symfony/uid
composer require symfony/uid
# If you want to use ramsey/uuid
composer require ramsey/uuid
use Setono\Client\Client;
// initialization with a generated id and an empty metadata object
$client = new Client();
// initialization with your own id and existing metadata
$client = new Client('my-client-id', ['foo' => 'bar']);
// get the client id
$id = $client->id;
// set metadata
$client->metadata->set('foo', 'bar');
// set metadata that expires in 1 hour
$client->metadata->set('foo', 'bar', 3600);
// get metadata
$client->metadata->get('foo');
// remove metadata
$client->metadata->remove('foo');
There's also a Cookie
class which can be used to store the client id in a cookie.