開発規範

アプリケーションディレクトリ

アプリケーションディレクトリは任意の場所に配置できます。

エントリファイル

nginx+PHP-FPMによるPHPアプリケーションと同様に、Workermanのアプリケーションにもエントリファイルが必要です。エントリファイル名に特別な要件はなく、このエントリファイルはPHP CLIモードで実行されます。

エントリファイルには、リスニングプロセスを作成するためのコードが含まれます。以下に、Workerを基にしたコードスニペットを示します。

test.php

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// 2345番ポートでWorkerを作成し、httpプロトコルで通信する
$http_worker = new Worker("http://0.0.0.0:2345");

// 外部にサービスを提供するために4つのプロセスを起動する
$http_worker->count = 4;

// ブラウザから送信されたデータを受信したとき、ブラウザにhello worldを返信する
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
    // ブラウザにhello worldを送信する
    $connection->send('hello world');
};

Worker::runAll();

Workermanにおけるコード規範

1、クラスは先頭大文字のキャメルケースで命名し、クラスファイル名はファイル内部のクラス名と同じにする必要があります。自動読み込みが可能になるように。例如:

class UserInfo
{
...

2、名前空間を使用し、名前空間名はディレクトリパスに対応させ、開発者のプロジェクトルートディレクトリを基準とします。

例えばプロジェクトMyAppでは、クラスファイルMyApp/MyClass.phpはプロジェクトルートディレクトリにあるため、名前空間を省略します。クラスファイルMyApp/Protocols/MyProtocol.phpはMyProtocol.phpがMyAppプロジェクトのProtocolsディレクトリ内にあるため、名前空間 namespace Protocols; を追加します。以下のように:

namespace Protocols;
class MyProtocol
{
....

3、通常の関数及び変数名は小文字とアンダースコアを使用して命名します。例えば:

$connection_list = array();
function get_connection_list()
{
....

4、クラスのメンバー及びメソッドは先頭小文字のキャメルケースで命名します。例えば:

public $connectionList;
public function getConnectionList();

5、関数及びクラスのパラメータは小文字とアンダースコアを使用して命名します。

function get_connection_list($one_param, $tow_param)
{
....