Quickstarters
Feature Overview
How to Build a Backend for Yii 2?
38 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้ วิธีการสร้างแบ็กเอนด์สำหรับ yii 2 โดยใช้ back4app yii 2 เป็นเฟรมเวิร์ก php แบบโอเพนซอร์สที่ได้รับความนิยม ซึ่งช่วยให้คุณสร้างแอปพลิเคชันเว็บที่ปลอดภัยและมีประสิทธิภาพ โดยการรวมเฟรมเวิร์ก yii กับ back4app คุณจะสามารถใช้ประโยชน์จากฟีเจอร์ที่ทรงพลัง เช่น การจัดการฐานข้อมูล ฟังก์ชันคลาวด์ rest และ graphql apis การตรวจสอบสิทธิ์ผู้ใช้ และการสอบถามแบบเรียลไทม์ – ทั้งหมดนี้ในขณะที่เร่งกระบวนการพัฒนาแบ็กเอนด์ของคุณ คุณจะเห็นวิธีการใช้สภาพแวดล้อมของ back4app เพื่อลดการกำหนดค่าของเซิร์ฟเวอร์ด้วยตนเอง ทำให้คุณสามารถมุ่งเน้นไปที่การเขียนโค้ด yii 2 ของคุณ โดยการทำตามขั้นตอนเหล่านี้ คุณจะได้รับประสบการณ์จริงกับฟังก์ชันการทำงานที่สำคัญ รวมถึงการควบคุมความปลอดภัยที่แข็งแกร่ง (acls, clps) การกำหนดตารางงานที่เกิดซ้ำ และการตั้งค่าการรวมภายนอกผ่านเว็บฮุค เมื่อสิ้นสุดบทเรียนนี้ คุณจะมีโครงสร้างแบ็กเอนด์ที่มั่นคงสำหรับโครงการ yii 2 ของคุณ พร้อมที่จะขยายไปสู่การผลิตหรือเสริมด้วยตรรกะทางธุรกิจที่กำหนดเอง คุณจะพร้อมที่จะรวม apis ของบุคคลที่สามหรือสร้างฟีเจอร์ใหม่ในแอปพลิเคชันเว็บของคุณ ข้อกำหนดเบื้องต้น ในการทำตามบทเรียนนี้ คุณจะต้องมี บัญชี back4app และโครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณยังไม่มีบัญชี ลงทะเบียนฟรีและทำตามคำแนะนำที่เชื่อมโยงเพื่อเตรียมโครงการของคุณให้พร้อม สภาพแวดล้อมการพัฒนา yii 2 ในเครื่อง คุณสามารถดาวน์โหลด yii 2 โดยใช้ composer https //getcomposer org/ และทำตาม คู่มืออย่างเป็นทางการของ yii 2 https //www yiiframework com/doc/guide/2 0/en สำหรับการตั้งค่า php (เวอร์ชัน 7 4 หรือสูงกว่า) ติดตั้งแล้ว คุณจะต้องมีสภาพแวดล้อม php ที่เข้ากันได้เพื่อเรียกใช้ yii 2 และจัดการแพ็คเกจ composer ความคุ้นเคยกับ php และแนวคิดพื้นฐานของ yii 2 หากคุณเป็นมือใหม่ใน yii framework ให้ตรวจสอบ เอกสารอย่างเป็นทางการของ yii 2 https //www yiiframework com/doc/guide/2 0/en ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดเบื้องต้นทั้งหมดนี้ก่อนที่คุณจะเริ่ม การตั้งค่าโครงการ back4app ของคุณและเตรียมสภาพแวดล้อม yii 2 ในเครื่องของคุณจะช่วยให้คุณติดตามได้ง่ายขึ้น ขั้นตอนที่ 1 – สร้างโครงการใหม่บน back4app และเชื่อมต่อ สร้างโครงการใหม่ ขั้นตอนแรกในการสร้างแบ็กเอนด์สำหรับ yii 2 คือการสร้างโครงการ back4app ใหม่ หากคุณยังไม่ได้ทำตามขั้นตอนเหล่านี้ เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ปุ่ม “new app” ในแดชบอร์ด back4app ของคุณ ตั้งชื่อแอปของคุณ (เช่น “yii2 backend tutorial”) เมื่อโปรเจกต์ถูกสร้างขึ้น คุณจะเห็นมันในแดชบอร์ด back4app ของคุณ นี่เป็นพื้นฐานสำหรับการกำหนดค่าทั้งหมดที่เราจะสำรวจในบทแนะนำนี้ การเชื่อมต่อผ่าน parse apis back4app ใช้ parse platform เป็นพื้นฐาน ในขณะที่ parse php sdk มีอยู่ คุณยังสามารถรวมแอปพลิเคชัน yii 2 ของคุณกับ back4app โดยใช้ rest หรือ graphql apis ของ parse วิธีนี้มีความยืดหยุ่น ทำให้คุณสามารถเขียนโค้ดที่ส่งคำขอ http หรือ graphql ไปยัง back4app จากคอนโทรลเลอร์หรือโมเดล yii ของคุณ ดึงคีย์ parse ของคุณ ในแดชบอร์ด back4app ของคุณ ไปที่ “การตั้งค่าแอป” หรือ “ความปลอดภัย & คีย์” ค้นหาค่า application id , rest api key , และ parse server url (ปกติคือ https //parseapi back4app com ) เก็บข้อมูลประจำตัวเหล่านี้ไว้ใกล้มือ คุณจะต้องใช้เมื่อทำการร้องขอจากแอปพลิเคชัน yii 2 ของคุณไปยัง back4app ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล โครงการ back4app ของคุณมาพร้อมกับฐานข้อมูลที่ใช้คลาวด์ซึ่งจัดการโดย parse server โดยอัตโนมัติ คุณสามารถสร้างโมเดลข้อมูลและเก็บวัตถุในนั้นโดยใช้ rest, graphql หรือ ai agent ใน back4app การสร้างโมเดลข้อมูล เปิดส่วน “ฐานข้อมูล” ในแดชบอร์ด back4app ของคุณ สร้างคลาสใหม่ (เช่น “todo”) และเพิ่มคอลัมน์เช่น title (string) และ iscompleted (boolean) คุณยังสามารถให้ parse สร้างคอลัมน์เหล่านี้โดยอัตโนมัติเมื่อครั้งแรกที่โค้ด yii ของคุณส่งข้อมูล นอกจากนี้ ai agent ของ back4app ยังสามารถช่วยคุณตั้งค่า schema ได้ เปิด ai agent จากแดชบอร์ดแอปของคุณหรือจากเมนู อธิบายโมเดลข้อมูลของคุณ (เช่น “สร้าง schema แอป todo ด้วยคลาส todo ”) อนุญาตให้ ai agent สร้าง schema การอ่านและเขียนข้อมูลโดยใช้ rest api ด้านล่างนี้คือตัวอย่างการบันทึก todo วัตถุโดยใช้ rest api คุณอาจจะนำไปใช้ใน action ของ controller ใน yii 2 โดยใช้ curl หรือ file get contents() ของ php เพื่อโพสต์ข้อมูล json curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo ตัวอย่างโค้ด php yii 2 (ใช้ curl) ใน controller public function actioncreatetodo() { $url = "https //parseapi back4app com/classes/todo"; $data = \[ "title" => "buy groceries", "iscompleted" => false ]; $headers = \[ "x parse application id your application id", "x parse rest api key your rest api key", "content type application/json" ]; $ch = curl init($url); curl setopt($ch, curlopt post, 1); curl setopt($ch, curlopt postfields, json encode($data)); curl setopt($ch, curlopt httpheader, $headers); curl setopt($ch, curlopt returntransfer, true); $result = curl exec($ch); curl close($ch); // handle $result as needed, e g , parse json or redirect } การสอบถามข้อมูลเดียวกันด้วย rest อาจมีลักษณะดังนี้ curl x get \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ https //parseapi back4app com/classes/todo การอ่านและเขียนข้อมูลโดยใช้ graphql api คุณยังสามารถสร้างและอ่านข้อมูลโดยใช้ส่วนติดต่อ graphql ของ parse ได้ ตัวอย่างเช่น การสร้าง todo mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } ใน yii 2 คุณสามารถใช้ ไลบรารี graphql https //packagist org/packages/webonyx/graphql php หรือคำขอ http แบบง่ายเพื่อโต้ตอบกับจุดสิ้นสุด graphql ของ back4app https //parseapi back4app com/graphql การทำงานกับ live queries (ตัวเลือก) สำหรับการอัปเดตแบบเรียลไทม์ back4app รองรับ live queries , ซึ่งให้คุณสมัครสมาชิกการเปลี่ยนแปลงในคลาส แม้ว่าการใช้งานทั่วไปใน yii 2 อาจจะไม่ค่อยพบเห็น แต่คุณยังสามารถเปิดใช้งาน live queries ในการตั้งค่า back4app ของคุณและจัดการการเชื่อมต่อ websocket ใน php นี่เป็นเรื่องที่ซับซ้อนมากขึ้น ดังนั้นโปรดดูที่ เอกสาร parse live queries https //www back4app com/docs/javascript live queries/parse livequery overview สำหรับรายละเอียดเกี่ยวกับการนำฟีเจอร์แบบเรียลไทม์ไปใช้ในแอปพลิเคชันเว็บที่ใช้ php ของคุณ ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps ภาพรวมสั้น ๆ back4app เสนอ access control lists (acls) และ class level permissions (clps) เพื่อปกป้องข้อมูลของคุณ acls ใช้กับวัตถุเฉพาะ ในขณะที่ clps กำหนดสิทธิ์ทั่วไประดับคลาสแต่ละคลาส การตั้งค่า class level permissions ไปที่ database ในแดชบอร์ด back4app ของคุณและเลือกคลาส (เช่น “todo”) เปิดแท็บ clps , และกำหนดสิทธิ์การอ่าน/เขียน (เช่น “ต้องการการตรวจสอบสิทธิ์” หรือ “ไม่มีการเข้าถึง”) การกำหนดค่า acls คุณสามารถตั้งค่า acls สำหรับวัตถุแต่ละรายการโดยการรวม acl ฟิลด์เมื่อสร้างหรืออัปเดตข้อมูลผ่าน rest หรือ graphql ตัวอย่างเช่น การใช้ rest curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{ "title" "private todo", "acl" { "user object id here" { "read" true, "write" true }, " " { "read" false, "write" false } } }' \\ https //parseapi back4app com/classes/todo วัตถุนี้สามารถเข้าถึงได้โดยผู้ใช้ที่มี objectid ที่ระบุเท่านั้น ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code ทำไมต้องใช้ cloud code การใช้ cloud code บน back4app ช่วยให้คุณสามารถเรียกใช้ตรรกะฝั่งเซิร์ฟเวอร์ที่กำหนดเองโดยไม่ต้องจัดการเซิร์ฟเวอร์ของคุณเอง คุณสามารถสร้าง ตรรกะทางธุรกิจ , การตรวจสอบข้อมูล , หรือ ทริกเกอร์ สำหรับการสร้างวัตถุ การอัปเดต และการลบ ตัวอย่างฟังก์ชัน cloud code ด้านล่างนี้เป็นฟังก์ชัน cloud code ที่ง่าย (เขียนด้วย javascript) ที่คำนวณความยาวของข้อความ main js // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); การปรับใช้ คุณสามารถปรับใช้ cloud code ของคุณผ่าน back4app cli หรือโดยตรงใน cloud code > functions ส่วนของแดชบอร์ด back4app ของคุณ back4app cli แดชบอร์ด คัดลอก/วางโค้ดของคุณลงใน main js และคลิก ปรับใช้ การเรียกใช้ฟังก์ชัน cloud ของคุณ คุณสามารถเรียกใช้ฟังก์ชันของคุณจาก yii 2 โดยใช้คำขอ rest post ที่ง่าย curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength หรือผ่าน graphql mutation { calculatetextlength(input { text "hello graphql" }) { result } } ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ์ การตรวจสอบสิทธิ์ผู้ใช้ใน back4app back4app ใช้ parse user คลาสเป็นพื้นฐานสำหรับการตรวจสอบสิทธิ์ที่ปลอดภัย คุณสามารถสร้างและตรวจสอบผู้ใช้ผ่านการเรียก rest หรือ graphql การสร้างผู้ใช้ด้วย rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{ "username" "alice", "password" "secret123", "email" "alice\@example com" }' \\ https //parseapi back4app com/users การเข้าสู่ระบบผู้ใช้ curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ g \\ \ data urlencode 'username=alice' \\ \ data urlencode 'password=secret123' \\ https //parseapi back4app com/login การเข้าสู่ระบบด้วยโซเชียล สำหรับการเข้าสู่ระบบด้วยโซเชียล (google, apple, facebook, ฯลฯ) ให้กำหนดค่าการตั้งค่า oauth ของคุณใน back4app และแอปพลิเคชัน yii 2 ของคุณเพื่อจัดการกับโทเค็นที่จำเป็น ดูเอกสาร เอกสารการเข้าสู่ระบบด้วยโซเชียล https //www back4app com/docs/platform/sign in with apple สำหรับแนวทางเฉพาะของผู้ให้บริการ การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน เปิดใช้งาน การตรวจสอบอีเมล และ การรีเซ็ตรหัสผ่าน ในการตั้งค่าอีเมลของแดชบอร์ด back4app ของคุณเพื่อปรับปรุงความปลอดภัยของผู้ใช้ ไปที่การตั้งค่าอีเมล ในแดชบอร์ด back4app ของคุณ เปิดใช้งานการตรวจสอบอีเมล และปรับแต่งเทมเพลตอีเมลของคุณ ทดสอบ ว่าอีเมลของคุณถูกส่งและได้รับอย่างถูกต้อง ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ back4app ให้บริการการจัดเก็บไฟล์ที่ปลอดภัยผ่านระบบ parse file ในขณะที่ parse php sdk เป็นตัวเลือก เราจะแสดง rest อีกครั้งเพื่อความสอดคล้อง การอัปโหลดไฟล์ผ่าน rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/png" \\ \ data binary "@path/to/local/image png" \\ https //parseapi back4app com/files/myimage png สิ่งนี้จะส่งกลับ url สำหรับไฟล์ที่บันทึก คุณสามารถเก็บ url นั้นในคลาส (เช่น photo ) เพื่อการเรียกคืนในภายหลัง ข้อพิจารณาด้านความปลอดภัยของไฟล์ คุณสามารถจำกัดการอัปโหลดไฟล์ให้เฉพาะผู้ใช้ที่ได้รับการตรวจสอบหรือบทบาทเฉพาะโดยการกำหนดค่าการตั้งค่า parse server ในแอปของคุณ สำหรับการควบคุมที่ละเอียดมากขึ้น ให้รวมการตั้งค่าเหล่านี้กับกฎ acl และ clp ของคุณ ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน ภาพรวม การตรวจสอบอีเมลช่วยให้ผู้ใช้มั่นใจว่าพวกเขาเป็นเจ้าของที่อยู่อีเมลที่ลงทะเบียน และการรีเซ็ตรหัสผ่านช่วยให้พวกเขากู้คืนบัญชีได้ การกำหนดค่าดashboard back4app เปิดใช้งานการตรวจสอบอีเมล ภายใต้ การตั้งค่าแอป > การตั้งค่าอีเมล ปรับแต่ง ที่อยู่ “จาก” และเทมเพลตอีเมล ทดสอบ โดยการสร้างผู้ใช้ใหม่เพื่อยืนยันว่าอีเมลการตรวจสอบถูกส่ง การดำเนินการ ในแอปพลิเคชัน yii 2 ของคุณ ให้ผู้ใช้ไปยังเส้นทางที่กระตุ้น จุดสิ้นสุดการรีเซ็ตรหัสผ่าน https //www back4app com/docs/users/password reset กระบวนการที่เหลือ (เช่น การส่งอีเมลจริง) จะถูกจัดการโดยโครงสร้างพื้นฐานของ back4app ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs cloud jobs ทำอะไร cloud jobs ใน back4app ช่วยให้คุณกำหนดตารางงานประจำ เช่น การทำความสะอาดข้อมูลหรือการส่งการแจ้งเตือน กำหนดพวกเขาใน cloud code ( main js ) และกำหนดตารางในแดชบอร์ด ตัวอย่าง งานทำความสะอาด main js parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); ขั้นตอนที่ 9 – การรวม webhooks คำจำกัดความ webhooks ช่วยให้แอปพลิเคชัน back4app ของคุณสามารถส่งคำขอ http อัตโนมัติไปยังบริการภายนอกเมื่อเกิดเหตุการณ์ เช่น การสร้าง todo ใหม่ การกำหนดค่า ในแดชบอร์ด back4app ของคุณ , ไปที่ เพิ่มเติม > webhooks เพิ่ม webhook endpoint (เช่น https //your external service com/webhook ) กำหนดค่า triggers (เช่น “ระเบียนใหม่ในคลาส todo”) ด้วยเว็บฮุก คุณสามารถส่งการแจ้งเตือนไปยังบริการอื่น ๆ (เช่น slack, stripe หรือ api ที่กำหนดเอง) ทุกครั้งที่มีการสร้างหรืออัปเดต todo วัตถุ ขั้นตอนที่ 10 – สำรวจแผงผู้ดูแล back4app หาที่ตั้ง แอปผู้ดูแล back4app เป็นอินเทอร์เฟซแบบคลิกและจุดสำหรับการจัดการข้อมูลของคุณโดยไม่ต้องเขียนโค้ด คุณสามารถเปิดใช้งานได้โดยการเยี่ยมชม app dashboard > more > admin app และจากนั้น enable admin app ฟีเจอร์ หลังจากสร้างผู้ใช้ผู้ดูแล คุณจะมีซับโดเมนเฉพาะสำหรับแอปผู้ดูแลของคุณ ซึ่งจะให้สมาชิกในทีมที่ได้รับอนุญาตมีอินเทอร์เฟซที่สะอาดสำหรับการดำเนินการ crud บนฐานข้อมูล back4app ของคุณ การตรวจสอบบันทึก หรือการดูการวิเคราะห์ — ไม่ต้องใช้โค้ด บทสรุป ในบทเรียนนี้ คุณได้ค้นพบ วิธีการสร้างแบ็คเอนด์สำหรับ yii 2 โดยใช้ back4app คุณได้กำหนดค่าฐานข้อมูลที่อยู่บนคลาวด์ ตั้งค่าความปลอดภัยที่แข็งแกร่งด้วย acls และ clps กำหนดตารางงานพื้นหลังด้วย cloud jobs และรวมบริการภายนอกผ่านเว็บฮุก คุณยังได้เห็นวิธีการจัดการการตรวจสอบสิทธิ์ผู้ใช้และการจัดเก็บไฟล์อย่างปลอดภัย เมื่อรวมเฟรมเวิร์ก yii แบบโอเพนซอร์สสำหรับการสร้างแอปพลิเคชันเว็บเข้ากับโครงสร้างพื้นฐานที่สามารถขยายได้ของ back4app ตอนนี้คุณมีสภาพแวดล้อมที่มีประสิทธิภาพพร้อมสำหรับการพัฒนาและการเติบโต ขั้นตอนถัดไป ก้าวไปสู่การผลิต โดยการขยายโมเดลข้อมูลของคุณ ใช้การตั้งค่าความปลอดภัยเพิ่มเติม และปรับปรุงประสิทธิภาพ รวม api ภายนอก (เกตเวย์การชำระเงิน ผู้ให้บริการอีเมล) ผ่าน cloud code หรือเว็บฮุกโดยตรง สำรวจเอกสารทางการของ back4app สำหรับหัวข้อที่ลึกซึ้งกว่า เช่น ความปลอดภัยขั้นสูง การวิเคราะห์บันทึก และการปรับปรุงประสิทธิภาพ เรียนรู้เพิ่มเติม เกี่ยวกับการสร้างแอปพลิเคชันเว็บที่ซับซ้อนด้วย yii 2 โดยใช้การควบคุมการเข้าถึงตามบทบาท กลยุทธ์การแคช และความสัมพันธ์ของฐานข้อมูลขั้นสูง ด้วยพื้นฐานนี้ คุณสามารถดำเนินการปรับปรุงโครงการ yii 2 ของคุณต่อไป มุ่งเน้นไปที่ตรรกะเฉพาะทางธุรกิจ และมอบฟังก์ชันการทำงานที่แข็งแกร่งและสามารถขยายได้สำหรับผู้ใช้ของคุณ สนุกกับการเขียนโค้ดและการสร้างแอปพลิเคชันเว็บสมัยใหม่