Оглавление
Это PHP-клиент для https://nchan.io.
composer require marein/php-nchan-client
Если вы хотите использовать адаптер PSR-18, установите библиотеку, реализующую http-клиент PSR-18 (см. здесь), и библиотеку, реализующую http-фабрики PSR-17 (см. здесь).
Если вы хотите использовать встроенный http-клиент (по умолчанию, если вы ничего не настроили), включите конфигурацию PHPallow_url_fopen.
В следующих примерах кода используется встроенный http-клиент.
<?php
namespace {
use Marein Nchan Api Model PlainTextMessage ;
use Marein Nchan Nchan ;
include ' /path/to/autoload.php ' ;
$ nchan = new Nchan ( ' http://my-nchan-domain ' );
$ channel = $ nchan -> channel ( ' /path-to-publisher-endpoint ' );
$ channelInformation = $ channel -> publish (
new PlainTextMessage (
' my-message-name ' ,
' my message content '
)
);
// Nchan returns some channel information after publishing a message.
var_dump ( $ channelInformation );
}
<?php
namespace {
use Marein Nchan Nchan ;
include ' /path/to/autoload.php ' ;
$ nchan = new Nchan ( ' http://my-nchan-domain ' );
$ channel = $ nchan -> channel ( ' /path-to-publisher-endpoint ' );
$ channelInformation = $ channel -> information ();
var_dump ( $ channelInformation );
}
<?php
namespace {
use Marein Nchan Nchan ;
include ' /path/to/autoload.php ' ;
$ nchan = new Nchan ( ' http://my-nchan-domain ' );
$ channel = $ nchan -> channel ( ' /path-to-publisher-endpoint ' );
$ channel -> delete ();
}
Конечные точки с директивой nchan_stub_status
можно запросить следующим образом.
<?php
namespace {
use Marein Nchan Nchan ;
include ' /path/to/autoload.php ' ;
$ nchan = new Nchan ( ' http://my-nchan-domain ' );
$ status = $ nchan -> status ( ' /path-to-status-location ' );
$ statusInformation = $ status -> information ();
var_dump ( $ statusInformation );
}
Конечные точки с директивой nchan_authorize_request
должны быть авторизованы. Конструктор встроенного http-клиента принимает реализацию типа Credentials. Эта библиотека поставляется с двумя встроенными реализациями: BasicAuthenticationCredentials и BearerAuthenticationCredentials.
<?php
namespace {
use Marein Nchan HttpAdapter BasicAuthenticationCredentials ;
use Marein Nchan HttpAdapter BearerAuthenticationCredentials ;
use Marein Nchan HttpAdapter HttpStreamWrapperClient ;
use Marein Nchan Nchan ;
include ' /path/to/autoload.php ' ;
// Client with basic authentication
$ adapter = new HttpStreamWrapperClient (
new BasicAuthenticationCredentials ( ' nchan ' , ' password ' )
);
// Client with bearer authentication
$ adapter = new HttpStreamWrapperClient (
new BearerAuthenticationCredentials ( ' my-token ' )
);
$ nchan = new Nchan ( ' http://my-nchan-domain ' , $ adapter );
}
Если вы используете другой http-клиент через адаптер PSR-18, соответствующий http-клиент имеет свои собственные точки расширения для изменения запроса перед его отправкой.
Эта библиотека поставляется с адаптером, совместимым с PSR-18. Есть веские причины не использовать встроенный клиент. Он основан на обертке http-потока и file_get_contents
. Это закрывает TCP-соединение после каждого запроса. Другие клиенты, см. ниже, могут сохранять соединение открытым.
В следующем примере используются guzzlehttp/guzzle и guzzlehttp/psr7.
<?php
namespace {
use GuzzleHttp Client ;
use GuzzleHttp Psr7 HttpFactory ;
use Marein Nchan HttpAdapter Psr18ClientAdapter ;
use Marein Nchan Nchan ;
include ' /path/to/autoload.php ' ;
$ nchan = new Nchan (
' http://my-nchan-domain ' ,
new Psr18ClientAdapter (
new Client (),
new HttpFactory (),
new HttpFactory ()
)
);
}
В следующем примере кода используются symfony/http-client и nyholm/psr7.
<?php
namespace {
use Marein Nchan HttpAdapter Psr18ClientAdapter ;
use Marein Nchan Nchan ;
use Nyholm Psr7 Factory Psr17Factory ;
use Symfony Component HttpClient HttpClient ;
use Symfony Component HttpClient Psr18Client ;
include ' /path/to/autoload.php ' ;
// Symfony itself needs an adapter to be PSR-18 compliant.
$ httpClient = new Psr18Client (
HttpClient:: create (),
new Psr17Factory (),
new Psr17Factory ()
);
$ nchan = new Nchan (
' http://my-nchan-domain ' ,
new Psr18ClientAdapter (
$ httpClient ,
$ httpClient ,
$ httpClient
)
);
}