Inhaltsverzeichnis
Dies ist ein PHP-Client für https://nchan.io.
composer require marein/php-nchan-client
Wenn Sie den PSR-18-Adapter verwenden möchten, installieren Sie eine Bibliothek, die den PSR-18-HTTP-Client implementiert (siehe hier) und eine Bibliothek, die PSR-17-HTTP-Fabriken implementiert (siehe hier).
Wenn Sie den integrierten http-Client verwenden möchten (Standard, wenn Sie nichts festlegen), aktivieren Sie die PHP-Konfiguration „allow_url_fopen“.
Die folgenden Codebeispiele verwenden den integrierten http-Client.
<?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 ();
}
Endpunkte mit der Direktive nchan_stub_status
können wie folgt abgefragt werden.
<?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 );
}
Endpunkte mit der Direktive nchan_authorize_request
müssen autorisiert werden. Der Konstruktor des integrierten HTTP-Clients verwendet eine Implementierung vom Typ Credentials. Diese Bibliothek verfügt über zwei integrierte Implementierungen: BasicAuthenticationCredentials und 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 );
}
Wenn Sie einen anderen http-Client über den PSR-18-Adapter verwenden, verfügt der jeweilige http-Client über eigene Erweiterungspunkte, um die Anfrage vor dem Senden zu ändern.
Diese Bibliothek wird mit einem PSR-18-kompatiblen Adapter geliefert. Es gibt gute Gründe, den integrierten Client nicht zu verwenden. Es basiert auf dem http-Stream-Wrapper und file_get_contents
. Dadurch wird die TCP-Verbindung nach jeder Anfrage geschlossen. Andere Clients, siehe unten, können die Verbindung offen halten.
Im folgenden Beispiel werden guzzlehttp/guzzle und guzzlehttp/psr7 verwendet.
<?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 ()
)
);
}
Das folgende Codebeispiel verwendet symfony/http-client und 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
)
);
}