目次
これは https://nchan.io の PHP クライアントです。
composer require marein/php-nchan-client
PSR-18 アダプターを使用する場合は、PSR-18 http クライアントを実装するライブラリ (こちらを参照) と PSR-17 http ファクトリを実装するライブラリ (こちらを参照) をインストールします。
組み込みの http クライアント (何も設定しない場合のデフォルト) を使用する場合は、php 設定のallow_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 という 2 つの組み込み実装が付属しています。
<?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 );
}
PSR-18 アダプター経由で別の http クライアントを使用する場合、それぞれの 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
)
);
}