목차
https://nchan.io용 PHP 클라이언트입니다.
composer require marein/php-nchan-client
PSR-18 어댑터를 사용하려면 PSR-18 http 클라이언트를 구현하는 라이브러리(여기 참조)와 PSR-17 http 팩토리를 구현하는 라이브러리(여기 참조)를 설치하세요.
내장된 http 클라이언트를 사용하려면(아무 것도 설정하지 않은 경우 기본값), PHP 구성 허용_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
)
);
}