개발 규약
애플리케이션 디렉토리
애플리케이션 디렉토리는 임의의 위치에 둘 수 있습니다.
진입 파일
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 내 코드 규약
-
클래스는 첫 글자를 대문자로 하여 카멜 케이스로 명명하며, 클래스 파일 이름은 파일 내부의 클래스 이름과 동일해야 합니다. 이를 통해 자동 로드가 가능합니다. 예를 들어:
class UserInfo { ... -
네임스페이스를 사용하며, 네임스페이스 이름은 디렉토리 경로에 해당하고, 개발자의 프로젝트 루트 디렉토리를 기준으로 합니다.
예를 들어 프로젝트 MyApp/에서, 클래스 파일 MyApp/MyClass.php는 프로젝트 루트 디렉토리에 있기 때문에 네임스페이스를 생략합니다. 클래스 파일 MyApp/Protocols/MyProtocol.php는 MyProtocol.php가 MyApp 프로젝트의 Protocols 디렉토리 아래에 있기 때문에 네임스페이스 namespace Protocols;를 추가해야 합니다. 아래와 같이 작성합니다:
namespace Protocols;
class MyProtocol
{
....
-
일반 함수 및 변수 이름은 소문자와 언더스코어(_) 방식을 사용합니다. 예를 들어:
$connection_list = array(); function get_connection_list() { .... -
클래스 멤버 및 클래스의 메서드는 첫 글자를 소문자로 하여 카멜 케이스 형식을 사용합니다. 예를 들어:
public $connectionList; public function getConnectionList(); -
함수 및 클래스의 매개변수는 소문자와 언더스코어(_) 방식을 사용합니다.
function get_connection_list($one_param, $tow_param) { ....