สร้างและรันโปรเจกต์ Phalcon
Phalcon คืออะไร?
Phalcon คือเฟรมเวิร์ก PHP สำหรับการพัฒนาเว็บแบบโอเพ่นซอร์สที่มีประสิทธิภาพสูง โดยถูกพัฒนาเป็นส่วนขยาย C ทำให้ใช้ทรัพยากรน้อยและประมวลผลได้เร็วกว่าเฟรมเวิร์ก PHP ทั่วไปอย่างมาก Phalcon ทำงานตามสถาปัตยกรรม MVC (Model-View-Controller) และมาพร้อมคอมโพเนนต์ที่หลากหลาย อาทิ ORM (Object Relational Mapping), เทมเพลตเอนจิน, ระบบจัดการเส้นทาง (Routing), แคช, ตัวจัดการเหตุการณ์ ฯลฯ เพื่ออำนวยความสะดวกสำหรับการสร้างเว็บแอปและ API ที่ทั้งทรงพลังและมีประสิทธิภาพสูง
คุณสมบัติหลักและข้อดีของ Phalcon
- ประสิทธิภาพยอดเยี่ยม: ด้วยการทำงานในรูปแบบส่วนขยาย C Phalcon จึงลดภาระการแปลและโหลดโค้ด PHP ให้มีประสิทธิภาพระดับเนทีฟ
- ใช้ทรัพยากรน้อย: ใช้หน่วยความจำน้อยมาก เหมาะสำหรับแอปที่ต้องการประสิทธิภาพและการขยายตัวสูง
- ครบเครื่องทุกฟังก์ชัน: รวมคอมโพเนนต์สำคัญเกือบทั้งหมดสำหรับเว็บแอป จึงลดการพึ่งพาไลบรารีภายนอก
- ใช้งานง่าย: มอบ API ที่ชัดเจน สม่ำเสมอ พร้อมเอกสารรายละเอียด แม้มือใหม่ก็เรียนรู้และพัฒนาได้รวดเร็ว
- แยกส่วนสูง: แต่ละคอมโพเนนต์ออกแบบแยกจากกัน เลือกใช้หรือเปลี่ยนแต่ละส่วนได้ตามต้องการ
- ปลอดภัย: มีฟีเจอร์ด้านความปลอดภัย เช่น ตัวกรองอินพุต การป้องกัน CSRF เป็นต้น
Phalcon จึงเหมาะสำหรับสร้างเว็บแอปหรือ API ที่ต้องการความเร็วสูงและประหยัดทรัพยากร โดยเฉพาะโปรเจกต์ที่มีข้อกำหนดด้านประสิทธิภาพอย่างเข้มงวด
สร้างและรันโปรเจกต์ Phalcon ด้วย ServBay
ServBay คือสภาพแวดล้อมสำหรับพัฒนาเว็บบน macOS ที่รวม PHP หลายเวอร์ชัน, ฐานข้อมูล (เช่น MySQL, PostgreSQL, MongoDB, Redis), เว็บเซิร์ฟเวอร์ (Caddy, Nginx, Apache) และเครื่องมืออื่นๆ ไว้ในที่เดียว ด้วย ServBay คุณสามารถติดตั้งและจัดการสภาพแวดล้อมสำหรับ Phalcon ได้อย่างสะดวกรวดเร็ว
คู่มือนี้จะแนะนำการใช้ PHP ของ ServBay เพื่อสร้างโปรเจกต์ Phalcon ตั้งค่าเว็บเซิร์ฟเวอร์ให้พร้อมใช้งาน และสาธิตการรวมฐานข้อมูลเชิงสัมพันธ์ (MySQL) กับ NoSQL (Redis)
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น กรุณาตรวจสอบให้แน่ใจว่าสิ่งเหล่านี้พร้อมใช้งาน:
- ติดตั้งและรัน ServBay แล้ว: ตรวจสอบว่าคุณติดตั้งและเปิดใช้งาน ServBay บน macOS เรียบร้อย
- เปิดใช้งาน PHP เวอร์ชันที่ต้องการแล้ว: ใน ServBay ให้เลือกเปิด PHP เวอร์ชันที่จะใช้พัฒนา
- เปิดใช้งานโมดูล Phalcon แล้ว: ServBay มี Phalcon มาให้ในตัว แต่อาจยังไม่ได้เปิดใช้งาน ต้องเปิดโมดูล Phalcon สำหรับ PHP เวอร์ชันที่ใช้ และรีสตาร์ทบริการ PHP ตามคำแนะนำใน วิธีเปิดใช้งาน Phalcon ใน ServBay
- ใช้ Composer ได้: ServBay ติดตั้ง Composer มาให้แล้ว ไม่ต้องติดตั้งเอง เพียงแค่เรียกคำสั่ง
composer
ในเทอร์มินัล
เวอร์ชันที่รองรับของ Phalcon และ DevTools
เวอร์ชันของเฟรมเวิร์ก Phalcon และ DevTools ต้องสอดคล้องกับ PHP ที่คุณใช้ ตารางข้างล่างแสดงความสัมพันธ์ของเวอร์ชันต่างๆ ที่แนะนำ:
เวอร์ชัน PHP | เวอร์ชัน Phalcon ที่แนะนำ | เวอร์ชัน Phalcon DevTools ที่แนะนำ | หมายเหตุ |
---|---|---|---|
PHP 5.6, 7.0, 7.1 | Phalcon 3.4.5 | 3.4.x | |
PHP 7.2, 7.3, 7.4 | Phalcon 4.1.2 | ~4.1 (หรือ 4.3.x ) | |
PHP 8.0, 8.1, 8.2 | Phalcon 5.x | 5.0.x (official) | DevTools official อาจมีปัญหาความเข้ากันกับ PHP 8.x |
PHP 8.3, 8.4 | Phalcon 5.x | dev-master (ใช้รีโปซิทอรีที่มีแพตช์) | แนะนำใช้ตัวแก้ไขจากคอมมูนิตี้เพื่อความเข้ากันได้ที่ดีขึ้น |
สำคัญ: สำหรับ PHP 8.x ขึ้นไป DevTools official อาจทำงานได้ไม่ครบถ้วน แนะนำใช้เวอร์ชันที่คอมมูนิตี้ทำแพตช์เพิ่ม ขั้นตอนสร้างโปรเจกต์ข้างล่างจะมีวิธีติดตั้งด้วย Composer
สร้างโปรเจกต์ Phalcon
ข้อแนะนำตำแหน่งเก็บเว็บไซต์
เพื่อความเป็นระเบียบ ServBay แนะนำให้สร้างโปรเจกต์ไว้ที่โฟลเดอร์ราก /Applications/ServBay/www
ตัวอย่างในคู่มือนี้จะใช้ตำแหน่งนี้เช่นกัน
เข้าเว็บไซต์โฟลเดอร์หลักและสร้างโฟลเดอร์โปรเจกต์
เปิดเทอร์มินัล เปลี่ยนไดเรกทอรีไปยังโฟลเดอร์รากเว็บไซต์ของ ServBay สร้างและเข้าโฟลเดอร์ใหม่ (เช่น
servbay-phalcon-app
):bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3ติดตั้ง Phalcon DevTools
Phalcon DevTools คือชุดคำสั่ง CLI สำหรับสร้างโครงสร้างโปรเจกต์ สร้างโค้ด และจัดการฐานข้อมูล ให้ติดตั้งผ่าน Composer โดยเลือกเวอร์ชันตาม PHP ที่ใช้:
สำหรับ PHP 5.6, 7.0, 7.1 (DevTools
^3.4
):bashcomposer require phalcon/devtools:"^3.4"
1สำหรับ PHP 7.2, 7.3, 7.4 (DevTools
~4.1
):bashcomposer require phalcon/devtools:"~4.1"
1สำหรับ PHP 8.0 ขึ้นไป (DevTools
dev-master
– community patched): ให้เพิ่มรีโปซิทอรีเวอร์ชันแพตช์ลงในcomposer.json
(ที่โฟลเดอร์/Applications/ServBay/www/servbay-phalcon-app
):json{ "repositories": [ { "url": "https://github.com/daleffe/phalcon-devtools-5.x-fixed.git", "type": "git" } ], "require": { "phalcon/devtools": "dev-master" }, "minimum-stability": "dev", "prefer-stable": true }
1
2
3
4
5
6
7
8
9
10
11
12
13แล้วรันคำสั่งอัปเดต Composer เพื่อติดตั้ง DevTools:
bashcomposer update
1
Composer จะสร้างโฟลเดอร์
vendor
โดย DevTools จะอยู่ที่vendor/bin/phalcon
ใช้ Phalcon DevTools สร้างโครงสร้างโปรเจกต์
ใช้ DevTools ที่เพิ่งติดตั้ง เพื่อสร้างโครงสร้างโปรเจกต์พื้นฐาน โค้ดจริงจะสร้างในโฟลเดอร์ย่อย (เช่น
servbay-phalcon-app
เหมือนชื่อโปรเจกต์):bashvendor/bin/phalcon project servbay-phalcon-app
1คำสั่งนี้จะสร้างโฟลเดอร์
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
พร้อมไฟล์โครงกระดูกของโปรเจกต์ Phalcon ที่สมบูรณ์เข้าไปในโฟลเดอร์โค้ดโปรเจกต์
เปลี่ยนไดเรกทอรีไปยังโฟลเดอร์โปรเจกต์ที่สร้างใหม่ เพื่อดำเนินการขั้นตอนถัดไปในนี้:
bashcd servbay-phalcon-app
1ตอนนี้ตำแหน่งของคุณคือ
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
ตั้งค่าสภาพแวดล้อมของโปรเจกต์
ค่าคอนฟิกของ Phalcon มักจัดการในไฟล์ app/config/config.php
กำหนดค่าการเชื่อมต่อฐานข้อมูล, path ต่างๆ ฯลฯ ได้ที่นี่
แก้ไขไฟล์คอนฟิก
เปิดไฟล์
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/config/config.php
ด้วย editor ที่ชอบ แล้วเพิ่มข้อมูลฐานข้อมูล โดย ServBay ตั้งค่าผู้ใช้เริ่มต้น MySQL/MariaDB เป็นroot
(รหัสผ่านว่าง) แต่ควรตั้งรหัสผ่านที่ปลอดภัย ตัวอย่างจะใช้password
เป็นตัวอย่าง ให้เปลี่ยนตามที่ตั้งไว้ และต้องสร้างฐานข้อมูลservbay_phalcon_app
ไว้ล่วงหน้าphpreturn new \Phalcon\Config([ // ... การตั้งค่าอื่น ... 'database' => [ 'adapter' => 'Mysql', // หรือ 'Postgres' เป็นต้น 'host' => '127.0.0.1', 'username' => 'root', // ผู้ใช้ root ของ ServBay 'password' => 'password', // <-- เปลี่ยนเป็นรหัสผ่านจริงของคุณ 'dbname' => 'servbay_phalcon_app', // <-- ชื่อฐานข้อมูล ], // ... การตั้งค่าอื่น ... ]);
1
2
3
4
5
6
7
8
9
10
11สำคัญ: ต้องเปิดใช้งานบริการฐานข้อมูล (MySQL, MariaDB ฯลฯ) ใน ServBay ผู้ใช้และรหัสต้องตรงกับที่คอนฟิกไว้ และสร้างฐานข้อมูล
servbay_phalcon_app
ผ่าน phpMyAdmin หรือ Adminer ที่ ServBay มีให้
ตั้งค่าเว็บเซิร์ฟเวอร์ (ด้วยฟีเจอร์เว็บไซต์ใน ServBay)
เพื่อให้เข้าถึงโปรเจกต์ผ่านเบราว์เซอร์ ต้องเพิ่มเว็บไซต์ใหม่ใน ServBay และตั้งค่าพอยน์ท์ไปยังโฟลเดอร์ public
ของโปรเจกต์
- เปิดแอป ServBay
- เข้าเมนู “เว็บไซต์”: คลิกที่ “เว็บไซต์” ในหน้าหลัก ServBay
- เพิ่มเว็บไซต์ใหม่:
- ชื่อ: ตั้งชื่อที่จำง่าย เช่น
My First Phalcon Dev Site
- โดเมน: ตั้งโดเมนที่ต้องการใช้งาน เช่น
servbay-phalcon-test.local
(ServBay จะ map.local
ให้) - ประเภทเว็บไซต์: เลือก
PHP
- เวอร์ชัน PHP: เลือกเวอร์ชันที่เปิด Phalcon Module
- เว็บไซต์ราก: ต้องชี้ไปที่โฟลเดอร์
public
ของโปรเจกต์ เช่น/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
- ชื่อ: ตั้งชื่อที่จำง่าย เช่น
- บันทึก: กดบันทึกเพื่อให้การตั้งค่ามีผล (อาจต้องรีสตาร์ทเซิร์ฟเวอร์ Caddy หรือ Nginx)
ดูรายละเอียดเพิ่มเติมได้ที่ เพิ่มเว็บไซต์แรก ServBay จะจัดการ DNS และคอนฟิกเว็บเซิร์ฟเวอร์ให้อัตโนมัติ
เพิ่มโค้ดตัวอย่าง
มาเพิ่มโค้ดเรียบง่ายเพื่อตรวจสอบว่าระบบทำงานถูกต้อง
ตั้งค่า Routing
แก้ไขไฟล์
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/config/routes.php
เพิ่มกฎ routing สำหรับ path/
:php<?php use Phalcon\Mvc\Router; $router = new Router(false); // สร้าง route เริ่มต้น mapping '/' ไปที่ indexAction ของ IndexController $router->add( '/', [ 'controller' => 'index', 'action' => 'index', ] ); // ... เพิ่ม routing อื่นๆ ต่อได้ ... $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19สร้าง Controller
แก้ไขหรือสร้างไฟล์
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/controllers/IndexController.php
เพิ่มเมทอดindexAction
ที่ง่ายๆ:php<?php namespace App\Controllers; // ตรวจสอบ namespace ให้ถูกต้อง use Phalcon\Mvc\Controller; class IndexController extends Controller { // จัดการ path '/' public function indexAction() { // ส่งสตริงง่ายๆ ตอบกลับ return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
เข้าชมเว็บไซต์
เมื่อบันทึกไฟล์แล้ว ตรวจสอบให้แน่ใจว่า ServBay กำลังทำงานอยู่ เปิดเบราว์เซอร์และเข้าที่โดเมนที่ตั้งไว้ใน ServBay
https://servbay-phalcon-test.local
หากทุกอย่างถูกต้อง จะเห็นข้อความ Hello ServBay!
ในเบราว์เซอร์
รวมการใช้งานฐานข้อมูล
Phalcon รองรับทั้งการเชื่อมต่อฐานข้อมูลและ ORM ServBay ก็ติดตั้งฐานข้อมูลยอดนิยมมาให้ เช่น MySQL และ Redis ตัวอย่างนี้สาธิตทั้งสองแบบ
ตัวอย่างฐานข้อมูลเชิงสัมพันธ์: MySQL
จะอธิบายวิธีใช้ Phalcon เชื่อมต่อเซอร์วิส MySQL ของ ServBay และรันการ insert/query ง่ายๆ
สร้างโครงสร้างฐานข้อมูล (ด้วย Migration)
Phalcon DevTools สนับสนุน Migration สำหรับจัดการ schema
สร้างไฟล์ Migration: รันคำสั่งเพื่อสร้าง migration ว่าง
bashvendor/bin/phalcon migration generate
1จะได้รับไฟล์ migration ใหม่ในโฟลเดอร์
migrations
แก้ไขไฟล์ Migration: เปิดไฟล์นั้น เพิ่มโครงสร้างตาราง
users
ใน methodmorph
:php<?php use Phalcon\Db\Column; use Phalcon\Db\Index; use Phalcon\Migrations\Mvc\Model\Migration; /** * Class UsersMigration_100 */ class UsersMigration_100 extends Migration // ชื่อต้องตรงกับชื่อไฟล์ { /** * Run the migrations * * @return void */ public function morph() { $this->morphTable('users', [ 'columns' => [ new Column( 'id', [ 'type' => Column::TYPE_INTEGER, 'autoIncrement' => true, 'notNull' => true, 'primary' => true, ] ), new Column( 'name', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, ] ), new Column( 'email', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, 'unique' => true, ] ), ], 'indexes' => [ new Index('PRIMARY', ['id'], 'PRIMARY'), new Index('email_UNIQUE', ['email'], 'UNIQUE'), ], 'options' => [ 'TABLE_ENGINE' => 'InnoDB', 'CHARACTER SET' => 'utf8mb4', 'COLLATE' => 'utf8mb4_unicode_ci', ], ]); } /** * Reverse the migrations * * @return void */ public function down() { // ตัวเลือก: การย้อนกลับ migration เช่น ลบตาราง // $this->getConnection()->dropTable('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70หมายเหตุ: ชื่อ class (เช่น
UsersMigration_100
) ต้องตรงกับชื่อไฟล์รัน migration: สั่ง DevTools เพื่อสร้างตารางในฐานข้อมูล
bashvendor/bin/phalcon migration run
1หากเชื่อมต่อไม่ได้ ให้ตรวจสอบ config ฐานข้อมูล กับการทำงานของ mysql/mariadb ใน ServBay
ตรวจสอบ config ฐานข้อมูล (ทำไว้แล้วก่อนหน้า)
ตรวจสอบว่า section
'database'
ในapp/config/config.php
ชี้ไปยังฐานข้อมูล MySQL/MariaDB ของ ServBay (host127.0.0.1
พอร์ต 3306 userroot
password ตามที่ตั้งค่าไว้)เพิ่ม route ตัวอย่าง
เพิ่ม route สำหรับ insert/query user ใน
app/config/routes.php
:php<?php use Phalcon\Mvc\Router; $router = new Router(false); $router->add('/', [ 'controller' => 'index', 'action' => 'index', ]); // เพิ่ม route สำหรับ insert user $router->add( '/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ] ); // เพิ่ม route สำหรับแสดง users ทั้งหมด $router->add( '/mysql', [ 'controller' => 'index', 'action' => 'mysql', ] ); $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31เพิ่มโค้ดเชื่อมต่อฐานข้อมูลใน Controller
เพิ่ม method
mysqlAddAction
และmysqlAction
ในapp/controllers/IndexController.php
เพื่อสาธิต insert/query:php<?php namespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; // import MySQL adapter use Phalcon\Db\Enum; // import Enum สำหรับ fetchAll class IndexController extends Controller { public function indexAction() { return 'Hello ServBay!'; } // ตัวอย่างเพิ่มผู้ใช้ public function mysqlAddAction() { // สร้างการเชื่อมต่อ MySQL ตรง $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- เปลี่ยนรหัสผ่านตามของจริง 'dbname' => 'servbay_phalcon_app', 'charset' => 'utf8mb4', ]); // เพิ่มผู้ใช้ตัวอย่าง $success = $connection->insert( 'users', ['ServBay Demo User', '[email protected]'], ['name', 'email'] ); // แสดงผล echo $success ? 'User added successfully.' : 'Failed to add user.'; } // ตัวอย่างดึงข้อมูลผู้ใช้ public function mysqlAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- เปลี่ยนรหัสผ่านตามของจริง 'dbname' => 'servbay_phalcon_app', 'charset' => 'utf8mb4', ]); $users = $connection->fetchAll('SELECT * FROM users', Enum::FETCH_ASSOC); // แสดง JSON กลับ header('Content-Type: application/json'); echo json_encode($users); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55หมายเหตุ: การเชื่อมต่อฐานข้อมูลควรจัดการใน service container และ inject ใน controller (เพื่อประสิทธิภาพที่ดีกว่า)
ทดสอบ
- เข้าที่เบราว์เซอร์
https://servbay-phalcon-test.local/mysql-add
จะเห็น "User added successfully." - เข้าที่
https://servbay-phalcon-test.local/mysql
จะแสดงข้อมูล users ในรูปแบบ JSON
- เข้าที่เบราว์เซอร์
ตัวอย่างฐานข้อมูล NoSQL: Redis
ดูวิธีใช้ Redis ที่มาพร้อม ServBay เป็นแคชในโปรเจกต์ Phalcon
ติดตั้ง Redis extension
PHP ที่มาพร้อม ServBay มี Redis extension อยู่แล้ว เพียงแค่เช็คให้เปิด extension ตรงเวอร์ชัน PHP ที่ใช้เท่านั้น (ไม่ต้อง pecl install เพิ่ม)
ตั้งค่าเชื่อมต่อ Redis
ไปที่
app/config/config.php
แล้วเพิ่มส่วนต่อไปนี้ (ServBay ใช้ host127.0.0.1
port6379
):phpreturn new \Phalcon\Config([ // ... การตั้งค่าอื่น ... 'cache' => [ 'adapter' => 'Redis', 'host' => '127.0.0.1', 'port' => 6379, 'index' => 0, 'persistent' => false, 'auth' => null, ], // ... การตั้งค่าอื่น ... ]);
1
2
3
4
5
6
7
8
9
10
11
12เพิ่ม routing สำหรับ Redis
เพิ่ม route สำหรับทดสอบ Redis ที่
app/config/routes.php
:php<?php use Phalcon\Mvc\Router; $router = new Router(false); $router->add('/', [ 'controller' => 'index', 'action' => 'index', ]); $router->add('/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ]); $router->add('/mysql', [ 'controller' => 'index', 'action' => 'mysql', ]); // เพิ่ม route ตัวอย่างใช้ Redis $router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] ); $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32ใช้งาน Redis ใน Controller
ที่ไฟล์
app/controllers/IndexController.php
เพิ่ม methodredisAction
เพื่อสาธิต cache ด้วย Redis:php<?php namespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; use Phalcon\Db\Enum; use Phalcon\Cache\Adapter\Redis; // import Redis Adapter use Phalcon\Storage\SerializerFactory; // import serializer class IndexController extends Controller { public function indexAction() { return 'Hello ServBay!'; } public function mysqlAddAction() { $connection = new Mysql([/* ... */]); $success = $connection->insert(/* ... */); echo $success ? 'User added successfully.' : 'Failed to add user.'; } public function mysqlAction() { $connection = new Mysql([/* ... */]); $users = $connection->fetchAll('SELECT * FROM users', Enum::FETCH_ASSOC); header('Content-Type: application/json'); echo json_encode($users); } // ตัวอย่าง cache ด้วย Redis public function redisAction() { // สร้าง serializer $serializerFactory = new SerializerFactory(); // ตั้งค่าการเชื่อมต่อ Redis // อ้างอิง config 'cache' $options = [ 'defaultSerializer' => 'Json', 'lifetime' => 3600, 'host' => '127.0.0.1', 'port' => 6379, 'index' => 0, // 'auth' => 'your_redis_password', ]; // สร้าง instance Redis cache $cache = new Redis($serializerFactory, $options); $cacheKey = 'my_servbay_redis_cache_key'; $cachedData = $cache->get($cacheKey); // ลองดึงข้อมูลจาก cache if ($cachedData === null) { // หากยังไม่มีข้อมูลใน cache echo "Data not found in cache, fetching from source..."; $cachedData = 'Data fetched from source: Hello Redis from ServBay!'; $cache->set($cacheKey, $cachedData); echo "Data stored in cache."; } else { // ถ้ามีข้อมูลแล้ว echo "Data found in cache: "; } // ส่งค่ากลับ return $cachedData; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69หมายเหตุ: ในแอปจริงแนะนำเก็บ cache config เป็น service ใน container เพื่อใช้งานซ้ำได้สะดวก
ทดสอบ
ที่เบราว์เซอร์ เข้าชม
https://servbay-phalcon-test.local/redis
- ครั้งแรกจะเห็น "Data not found in cache, fetching from source...Data stored in cache." และ "Data fetched from source: Hello Redis from ServBay!"
- ครั้งถัดไปจะเห็น "Data found in cache: " พร้อม "Data fetched from source: Hello Redis from ServBay!" แสดงว่าข้อมูลดึงจาก Redis cache
คำถามที่พบบ่อย (FAQ)
- ถ้าเข้าเว็บแล้วเจอ 404 Not Found ทำไง?
- ตรวจสอบว่าเว็บไดเรกทอรีที่ตั้งค่าใน ServBay ชี้ไปที่โฟลเดอร์
public
ของโปรเจกต์จริง (/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
) และเว็บเซิร์ฟเวอร์ (Caddy, Nginx) รวมทั้งการ resolve ของโดเมนในเครื่องทำงานถูกต้อง
- ตรวจสอบว่าเว็บไดเรกทอรีที่ตั้งค่าใน ServBay ชี้ไปที่โฟลเดอร์
- ถ้าเจอ error ว่าไม่พบ Phalcon module (เช่น Class 'Phalcon\Mvc\Application' not found)?
- หมายถึงไม่ได้เปิด Phalcon extension สำหรับ PHP เวอร์ชันที่ใช้งาน เปิดเวอร์ชันที่ต้องการใน ServBay และรีสตาร์ท PHP ดูวิธีที่ วิธีเปิดใช้งาน Phalcon ใน ServBay
- ถ้าเชื่อมต่อฐานข้อมูลไม่ได้?
- ตรวจสอบ config (host, user, password, dbname) ให้ถูกต้อง และแน่ใจว่าบริการ MySQL/MariaDB ทำงานอยู่ รวมทั้ง database/user ตั้งค่าถูกและมีสิทธิ์เข้าถึง
สรุป
ServBay ช่วยให้คุณสร้างสภาพแวดล้อม Phalcon ที่มีประสิทธิภาพสูงบนเครื่อง macOS ได้ง่ายดาย คู่มือนี้เสนอวิธีตั้งแต่สร้างโปรเจกต์พื้นฐาน ตั้งค่าเว็บเซิร์ฟเวอร์ รวมถึงการเชื่อมต่อฐานข้อมูลทั้ง MySQL และ Redis ทั้งหมดนี้ผ่านอินเตอร์เฟซที่ใช้งานง่ายของ ServBay ช่วยลดภาระการตั้งค่ามาก และมุ่งเน้นให้คุณสนุกกับการพัฒนาแอป Phalcon อย่างเต็มที่ หวังว่าคู่มือนี้จะช่วยให้คุณเริ่มต้นใช้งาน ServBay กับ Phalcon ได้อย่างราบรื่น!