workfront / nats
A nats.io client in PHP
Requires
- php: ^7.1
Requires (Dev)
- leanphp/phpspec-code-coverage: ^3.2@dev
- phpspec/phpspec: ^3.0
- phpunit/phpunit: 5.*
- satooshi/php-coveralls: 2.0.x-dev
This package is auto-updated.
Last update: 2024-11-05 16:42:21 UTC
README
Introduction
A PHP client for the NATS messaging system. This fork of phpnats by repejota that supports more recent versions of NATS (2.2.0-beta) and contains little improvements to fit more into PHP7 world.
Requirements
- php 7.1+
- gnatsd
Usage
Installation
Let's start by downloading composer into our project dir:
curl -O http://getcomposer.org/composer.phar
chmod +x composer.phar
Now let's tell composer about our project's dependancies, in this case, PHPNats. The way we do this is by creating a composer.json file, and placing it in the root folder of our project, right next to composer.phar
{
"require": {
"workfront/nats": "^2.2.3"
}
}
Let's let Composer work its magic:
php composer.phar install
Composer will download all the dependencies defined in composer.json, and prepare all the files needed to autoload them.
Basic Usage
$client = new \Nats\Connection(); $client->connect(); // Publish Subscribe // Simple Subscriber. $client->subscribe( 'foo', function ($message) { printf("Data: %s\r\n", $message->getBody()); } ); // Simple Publisher. $client->publish('foo', 'Marty McFly'); // Wait for 1 message. $client->wait(1); // Request Response // Responding to requests. $sid = $client->subscribe( 'sayhello', function ($message) { $message->reply('Reply: Hello, '.$message->getBody().' !!!'); } ); // Request. $client->request( 'sayhello', 'Marty McFly', function ($message) { echo $message->getBody(); } );
Encoded Connections
$encoder = new \Nats\Encoders\JSONEncoder(); $options = new \Nats\ConnectionOptions(); $client = new \Nats\EncodedConnection($options, $encoder); $client->connect(); // Publish Subscribe // Simple Subscriber. $client->subscribe( 'foo', function ($payload) { printf("Data: %s\r\n", $payload->getBody()[1]); } ); // Simple Publisher. $client->publish( 'foo', [ 'Marty', 'McFly', ] ); // Wait for 1 message. $client->wait(1); // Request Response // Responding to requests. $sid = $client->subscribe( 'sayhello', function ($message) { $message->reply('Reply: Hello, '.$message->getBody()[1].' !!!'); } ); // Request. $client->request( 'sayhello', [ 'Marty', 'McFly', ], function ($message) { echo $message->getBody(); } );
Developer's Information
Releases
Tests
Tests are in the tests
folder.
To run them, you need PHPUnit
and execute make test-tdd
.
We also have a BDD test suite under the spec
folder.
To run the suite, you need PHPSpec
and execute make test-bdd
.
You can also execute the all suites ( TDD + BDD ) with make test
.
Code Quality
We are using PHP Code Sniffer to ensure our code follow an high quality standard.
To perform an analysis of the code execute make lint
.
There is currently three steps when we lint our code:
- First we lint with php itself
php -l
- Then we lint with PSR2 standard
- And finally we lint with a custom ruleset.xml that checks dockblocks and different performance tips.
Creators
Raül Pérez
License
MIT, see LICENSE