แนวทางการพัฒนา

โฟลเดอร์แอปพลิเคชัน

โฟลเดอร์แอปพลิเคชันสามารถอยู่ที่ใดก็ได้

ไฟล์เริ่มต้น

เช่นเดียวกับแอปพลิเคชัน PHP ที่ใช้ nginx+PHP-FPM แอปพลิเคชันใน Workerman ก็ต้องการไฟล์เริ่มต้น ไฟล์เริ่มต้นไม่มีข้อกำหนดชื่อ และไฟล์เริ่มต้นนี้จะทำงานในรูปแบบ PHP Cli

ในไฟล์เริ่มต้น จะมีโค้ดที่เกี่ยวข้องกับการสร้างโพรเซสการติดตาม เช่น รหัสข้อมูลในรูปแบบ Workerman ด้านล่างนี้

test.php

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

// สร้าง Worker ที่ฟังบนพอร์ต 2345 โดยใช้โปรโตคอล 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. คลาสใช้การตั้งชื่อแบบ CamelCase โดยอักษรตัวแรกเป็นตัวพิมพ์ใหญ่ ชื่อไฟล์คลาสต้องตรงกับชื่อคลาสภายใน เพื่อให้สามารถทำการโหลดอัตโนมัติได้ เช่น:

    class UserInfo
    {
    ...
  2. ใช้ namespace ชื่อ namespace จะต้องตรงกับเส้นทางในโฟลเดอร์ และใช้โฟลเดอร์รากของโปรเจคเป็นฐาน

ตัวอย่างโปรเจค MyApp/ ไฟล์คลาส MyApp/MyClass.php เนื่องจากอยู่ในโฟลเดอร์รากของโปรเจค จึงไม่ต้องระบุ namespace ไฟล์คลาส MyApp/Protocols/MyProtocol.php เนื่องจาก MyProtocol.php อยู่ในโฟลเดอร์ Protocols ของโปรเจค MyApp จึงต้องเพิ่ม namespace namespace Protocols; ดังนี้:

namespace Protocols;
class MyProtocol
{
....
  1. ฟังก์ชันและชื่อตัวแปรใช้รูปแบบตัวพิมพ์เล็กและขีดล่าง เช่น

    $connection_list = array();
    function get_connection_list()
    {
    ....
  2. สมาชิกของคลาสและเมธอดของคลาสใช้รูปแบบ CamelCase โดยอักษรตัวแรกเป็นตัวพิมพ์เล็ก เช่น:

    public $connectionList;
    public function getConnectionList();
  3. ฟังก์ชันและพารามิเตอร์ของคลาสใช้รูปแบบตัวพิมพ์เล็กและขีดล่าง

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