psr-4 の指定
WebSocketのサーバーを立ち上げた時の例を記載しています
プロジェクトフォルダを下記構成とし、サーバー起動はプロジェクトフォルダで『c:\・・・> php bin\server.php』と入力して起動します
プロジェクトフォルダ
├ composer.json // ライブラリ管理ファイル
├ composer.lock // ライブラリ管理ファイル
└ vendor/ // ライブラリ本体
| └ autoload.php
└ bin/
| └ server.php // サーバープログラム(起動)
└ src/
├ EspServer.php // サーバープログラム(本体)
├ ???.php
『composer.json』ファイルの autoload に以下の記述をします。名前空間 ”EspApp” に ディレクトリ “./src” を紐付けし、”EspApp” が使用されたら “./src” のディレクトリが検索されて オートロードされるようです(詳しくは知りません)
『composer.json』があるフォルダで『c:\・・・> composer dump-autoload』を入力すると、下記 autoload が反映されます
***************** composer.json *****************
{
"autoload": {
"psr-4": {
"EspApp\\": "src"
}
},
"require": {
"cboden/ratchet": "^0.4.4"
}
}
プロジェクトフォルダで『c:\・・・> php bin\server.php』と入力してサーバーを起動しますが、ファイル中で宣言している『use EspApp\EspServer』によって『”./src/EspServer.php”』を参照し『new EspServer()』が実行されます
***************** server.php *****************
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use EspApp\EspServer;
require dirname ( __DIR__ ) . '/vendor/autoload.php';
$server = IoServer::factory ( new HttpServer( new WsServer( new EspServer() ) ), 8080 );
$server->run ();
***************** EspServer.php *****************
<?php
namespace EspApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class EspServer implements MessageComponentInterface
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
{
public function __construct()
{
}
/*************************/
/* オープンイベント */
/*************************/
// $wsInterface Websocket接続オブジェクト
public function onOpen( ConnectionInterface $wsInterface )
{
}
/*************************/
/* メッセージ受信イベント */
/*************************/
// $wsInterface Websocket接続オブジェクト
// $message 受信メッセージ
public function onMessage( ConnectionInterface $wsInterface, $message )
{
}
/*************************/
/* クローズイベント */
/*************************/
// $wsInterface Websocket接続オブジェクト
public function onClose( ConnectionInterface $wsInterface )
{
}
/*************************/
/* エラーイベント */
/*************************/
// $wsInterface Websocket接続オブジェクト
// $e イベント
public function onError( ConnectionInterface $wsInterface, \Exception $e )
{
echo "An error has occurred: {$e->getMessage()}\n";
$wsInterface->close();
}
}