Quickstarters
Feature Overview
How to Build a Backend for Symfony?
27 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้ วิธีการสร้างแบ็กเอนด์สำหรับ symfony โดยใช้ back4app เราจะแสดงให้คุณเห็นวิธีการใช้ฟีเจอร์ที่แข็งแกร่งของ back4app—รวมถึงการจัดการฐานข้อมูล, cloud code, rest, และ graphql apis—เพื่อสร้างแบ็กเอนด์ที่ปลอดภัย, ขยายขนาดได้, และมีประสิทธิภาพที่ทำงานได้อย่างราบรื่นกับแอปพลิเคชัน symfony ของคุณ คุณจะได้ค้นพบวิธีการจัดการการตรวจสอบสิทธิ์ของผู้ใช้, การจัดเก็บไฟล์, และการอัปเดตแบบเรียลไทม์ผ่าน live queries (ถ้าใช้ได้กับสถาปัตยกรรมของคุณ) โดยการใช้การตั้งค่าที่รวดเร็วและแพลตฟอร์มที่ใช้งานง่ายของ back4app คุณจะประหยัดเวลาและความพยายามเมื่อเปรียบเทียบกับการจัดการเซิร์ฟเวอร์และฐานข้อมูลด้วยตนเอง คุณจะได้รับประสบการณ์จริงในด้านความปลอดภัยขั้นสูง, การกำหนดตารางงานด้วย cloud jobs, การกำหนดค่าเว็บฮุค, และฟีเจอร์ที่จำเป็นอื่นๆ สำหรับการพัฒนาแบ็กเอนด์ที่เชื่อถือได้ หลังจากที่คุณทำตามบทแนะนำนี้เสร็จสิ้น คุณสามารถขยายหรือปรับแต่ง symfony backend ของคุณสำหรับการผลิตได้อย่างมั่นใจ รวมถึงการรวม api ภายนอกและเพิ่มตรรกะทางธุรกิจที่ซับซ้อนได้ตามต้องการ ข้อกำหนดเบื้องต้น บัญชี back4app ลงทะเบียนฟรี ที่นี่ https //www back4app com โครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app การตั้งค่าเฉพาะ symfony ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง symfony https //symfony com/download ไว้ในเครื่องของคุณแล้ว ยืนยันว่าคุณมี php และ composer พร้อมใช้งาน ความรู้พื้นฐานเกี่ยวกับ symfony ความคุ้นเคยกับคอนโทรลเลอร์, บริการ, และการสร้างเทมเพลตจะเป็นประโยชน์ เอกสารทางการของ symfony https //symfony com/doc/current/index html node js (ไม่บังคับ, สำหรับเครื่องมือสร้างบางอย่าง) หากคุณวางแผนที่จะใช้เครื่องมือที่ใช้ node สำหรับงานด้านหน้า ให้ติดตั้ง node js https //nodejs org/en/download/ ตรวจสอบให้แน่ใจว่าสภาพแวดล้อม symfony และโครงการ back4app ของคุณถูกตั้งค่าเรียบร้อยก่อนที่คุณจะเริ่ม นี่จะช่วยให้คุณทำตามขั้นตอนได้อย่างราบรื่น ขั้นตอนที่ 1 – การสร้างโครงการใหม่บน back4app และการเชื่อมต่อ สร้างโปรเจกต์ back4app เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ “new app” ในแดชบอร์ด ตั้งชื่อมัน (เช่น “symfony backend tutorial”) เมื่อสร้างเสร็จแล้ว มันจะแสดงในแดชบอร์ด back4app ของคุณ โปรเจกต์นี้คือพื้นฐานของแบ็กเอนด์ของคุณ เชื่อมต่อด้วย rest หรือ graphql ใน “app settings” หรือ “security & keys” ของแอปของคุณ ให้ค้นหา application id และ rest api key (และ graphql endpoint หากคุณวางแผนที่จะใช้ graphql) บันทึก parse server url ของคุณ (เช่น https //parseapi back4app com ) เนื่องจาก symfony ไม่มี parse sdk ที่เป็นมาตรฐาน คุณจะต้องพึ่งพา http client ของ symfony หรือไลบรารีอย่าง guzzle เพื่อสื่อสารกับ rest หรือ graphql apis ของ back4app ด้านล่างนี้คือตัวอย่างการใช้ symfony httpclient https //symfony com/doc/current/http client html // src/service/back4appclient php namespace app\service; use symfony\component\httpclient\httpclient; class back4appclient { private $appid; private $restkey; private $baseurl; public function construct(string $appid, string $restkey, string $baseurl) { $this >appid = $appid; $this >restkey = $restkey; $this >baseurl = $baseurl; } public function createobject(string $classname, array $data) { $client = httpclient create(); $response = $client >request('post', $this >baseurl '/classes/' $classname, \[ 'headers' => \[ 'x parse application id' => $this >appid, 'x parse rest api key' => $this >restkey, 'content type' => 'application/json' ], 'json' => $data, ]); return $response >toarray(); } } บริการนี้จะช่วยให้คุณทำการร้องขอไปยัง back4app backend ของคุณจากภายใน symfony ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล การสร้างโมเดลข้อมูล ใน back4app คุณจะกำหนดคลาส (ตาราง) ที่เก็บข้อมูลของคุณ มาลองดูว่าคุณต้องการคลาส todo เพื่อเก็บงาน ไปที่ฐานข้อมูล ในแดชบอร์ด back4app ของคุณ สร้างคลาสใหม่ “todo” และเพิ่มฟิลด์เช่น title (string) และ iscompleted (boolean) หรือให้ back4app ai agent สร้างโมเดลข้อมูลของคุณ เปิด ai agent ในแดชบอร์ดโปรเจกต์ของคุณ อธิบาย โมเดลข้อมูลของคุณ (เช่น “สร้างคลาส todo ที่มีฟิลด์ title และ iscompleted”) สร้าง สคีม่าโดยอัตโนมัติ การอ่านและเขียนข้อมูลโดยใช้ rest เพื่อ สร้าง todo ใหม่จากคอนโทรลเลอร์ symfony คุณสามารถทำได้ use app\service\back4appclient; use symfony\bundle\frameworkbundle\controller\abstractcontroller; use symfony\component\routing\annotation\route; class todocontroller extends abstractcontroller { \#\[route('/todo/new', name 'new todo')] public function new(back4appclient $client) { $data = \[ 'title' => 'buy groceries', 'iscompleted' => false ]; $result = $client >createobject('todo', $data); return $this >json($result); } } สำหรับ การค้นหา , ใช้คำขอ get พร้อมกับข้อมูลประจำตัวของคุณ 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 คุณยังสามารถรวม graphql ใน symfony โดยใช้ไลบรารีลูกค้า graphql ตัวอย่างการเปลี่ยนแปลงเพื่อสร้าง todo คือ mutation { createtodo(input { fields { title "clean the kitchen" iscompleted false } }) { todo { objectid title iscompleted } } } การทำงานกับ live queries (ไม่บังคับ) หากแอป symfony ของคุณต้องการข้อมูลเรียลไทม์ คุณสามารถรวม live queries ในบริบทของไมโครเซอร์วิสที่เน้นด้านหน้า หรือเรียลไทม์ได้ กำหนดค่า live queries ใน server settings บน back4app จากนั้นเชื่อมต่อกับ websocket client symfony สามารถตอบสนองหรือกระจายการอัปเดตเหล่านี้ผ่านชั้นเรียลไทม์แยกต่างหากหากจำเป็น ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps acls (access control lists) acls ช่วยให้คุณควบคุมว่าใครสามารถอ่านหรือเขียนวัตถุได้ ตัวอย่างเช่น คุณสามารถใช้ acl ในโค้ดเมื่อสร้างข้อมูลด้วย rest api โดยการเพิ่ม acl ฟิลด์ใน json ของคุณ ตัวอย่างเช่น { "title" "private task", "iscompleted" false, " acl" { "userobjectidhere" { "read" true, "write" true } } } clps (class level permissions) class level permissions ช่วยให้คุณตั้งค่ากฎการเข้าถึงที่กว้างสำหรับทั้งคลาส เปิดฐานข้อมูล ในแดชบอร์ด back4app เลือกคลาสของคุณ (เช่น “todo”) ไปที่แท็บ permissions และกำหนดค่าการเข้าถึงการอ่าน/เขียน สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชม แนวทางความปลอดภัยของแอป https //www back4app com/docs/security/parse security ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code cloud code ช่วยให้คุณสามารถรัน javascript ฝั่งเซิร์ฟเวอร์อย่างปลอดภัยโดยไม่ต้องจัดการโครงสร้างพื้นฐาน ในขณะที่ symfony ใช้ php คุณยังสามารถมอบหมายงานบางอย่างให้กับ cloud code บน back4app สำหรับตรรกะขั้นสูง ทริกเกอร์ และการตรวจสอบความถูกต้อง ตัวอย่าง ตรวจสอบ todo ก่อนบันทึก // main js parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw new error('todo must have a title'); } }); การปรับใช้ ใช้ back4app cli หรือแดชบอร์ดเพื่อปรับใช้ main js เรียกใช้ฟังก์ชัน cloud ของคุณ ผ่าน rest หรือ graphql จากบริการ symfony ของคุณ ขั้นตอนที่ 5 – การกำหนดค่าการตรวจสอบสิทธิ์ การจัดการผู้ใช้ใน back4app ขึ้นอยู่กับ คลาส parse user ด้วย symfony คุณสามารถจัดการการลงทะเบียนผู้ใช้ การเข้าสู่ระบบ และการรีเซ็ตรหัสผ่านผ่านการเรียก rest หรือ graphql ลงทะเบียน / เข้าสู่ระบบผ่าน rest \# sign up 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" "alex", "password" "symfony123", "email" "alex\@example com"}' \\ https //parseapi back4app com/users \# log in curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ \ data urlencode 'username=alex' \\ \ data urlencode 'password=symfony123' \\ https //parseapi back4app com/login ใช้บริการ symfony เพื่อห่อหุ้มการเรียกเหล่านี้หากคุณต้องการการไหลของผู้ใช้แบบโปรแกรม เข้าสู่ระบบด้วยโซเชียล หากคุณวางแผนที่จะรวมการลงชื่อเข้าใช้ google หรือ apple โปรดดูที่ เอกสารการเข้าสู่ระบบโซเชียลของ back4app https //www back4app com/docs/platform/sign in with apple คุณจะต้องกำหนดค่าแอป oauth ของคุณและทำการเรียก rest เฉพาะเพื่อทำการตรวจสอบสิทธิ ขั้นตอนที่ 6 – การจัดการการจัดเก็บไฟล์ อัปโหลดไฟล์ด้วย 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 '@localimage png' \\ https //parseapi back4app com/files/localimage png หลังจากอัปโหลด คุณจะได้รับ url ของไฟล์ คุณสามารถเก็บลิงก์นั้นในคลาสใดก็ได้ (เช่น, todo ) เป็นการอ้างอิงถึงไฟล์นั้น ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน การกำหนดค่าอีเมล ไปที่การตั้งค่าอีเมล ใน back4app เปิดใช้งานการตรวจสอบอีเมล และเทมเพลตการรีเซ็ตรหัสผ่าน ปรับแต่ง “จาก” และ “หัวเรื่อง” ตามที่ต้องการ สิ่งนี้ทำให้แน่ใจว่าการลงทะเบียนทั้งหมดต้องการการยืนยันอีเมลที่ถูกต้อง ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs ตัวอย่าง cloud job // main js parse cloud job('cleanupoldtodos', async () => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; query lessthan('createdat', new date(now thirty days)); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); กำหนดตารางงานนี้ cleanupoldtodos ในแดชบอร์ด back4app ของคุณให้ทำงานทุกวัน เพื่อปรับปรุงการจัดการข้อมูลของคุณ ขั้นตอนที่ 9 – การรวม webhooks webhooks ช่วยให้ back4app ส่งคำขอ http ไปยังบริการภายนอก ตัวอย่างเช่น คุณสามารถส่งสัญญาณไปยังจุดสิ้นสุด slack ทุกครั้งที่มีการสร้าง todo ใหม่ ไปที่ เพิ่มเติม > webhooks ในแดชบอร์ด back4app ของคุณ เพิ่ม webhook โดยระบุจุดสิ้นสุดภายนอกของคุณ กระตุ้น เหตุการณ์เมื่อมีการสร้างวัตถุในคลาส todo ขั้นตอนที่ 10 – การสำรวจแผงผู้ดูแล back4app ใช้ back4app admin app เพื่อการจัดการข้อมูลที่ใช้งานง่าย เปิดใช้งาน admin app จาก app dashboard > more > admin app สร้างผู้ใช้ admin ด้วยชื่อผู้ใช้และรหัสผ่านที่ปลอดภัย กำหนดชื่อโดเมนย่อยที่กำหนดเอง เพื่อการเข้าถึงที่ง่าย ฟีเจอร์นี้ช่วยให้สมาชิกในทีมที่ไม่ใช่เทคนิคสามารถดูและจัดการบันทึกได้โดยไม่ต้องลงลึกในโค้ด บทสรุป คุณได้เรียนรู้ วิธีการสร้างแบ็คเอนด์สำหรับ symfony โดยใช้ back4app ซึ่งรวมถึง สร้างโปรเจกต์ใหม่ บน back4app เป็นพื้นฐาน กำหนดค่าฐานข้อมูล ด้วยคลาส ฟิลด์ และความสัมพันธ์ รักษาความปลอดภัยข้อมูล ด้วย acls และ clps ใช้ cloud code สำหรับตรรกะฝั่งเซิร์ฟเวอร์ จัดการการตรวจสอบสิทธิ์ผู้ใช้ (การลงทะเบียน, การเข้าสู่ระบบ, การรีเซ็ตรหัสผ่าน) จัดการการจัดเก็บไฟล์ ด้วย rest api ตั้งค่า cloud jobs สำหรับงานตามกำหนดเวลา รวมเว็บฮุค เพื่อเชื่อมต่อบริการภายนอก นำทางไปยัง back4app admin panel เพื่อการจัดการข้อมูลที่ง่าย ขั้นตอนเหล่านี้ให้กรอบงานที่แข็งแกร่งสำหรับการสร้างและขยายแอปพลิเคชัน symfony ของคุณ ขยายสถาปัตยกรรมนี้เพื่อจัดการตรรกะที่ซับซ้อนมากขึ้น รวมถึงเกตเวย์การชำระเงิน หรือเพิ่มฟีเจอร์ความปลอดภัยขั้นสูง ด้วย back4app คุณประหยัดเวลาและความพยายามในการโฮสต์และโครงสร้างพื้นฐาน—ดังนั้นคุณจึงสามารถมุ่งเน้นไปที่การมอบประสบการณ์ผู้ใช้ที่ดีที่สุดเท่าที่จะเป็นไปได้ ขั้นตอนถัดไป สร้างแอป symfony ที่พร้อมสำหรับการผลิต โดยปรับแต่งแบ็กเอนด์ back4app ของคุณสำหรับการเข้าชมที่สูงขึ้นและความต้องการด้านประสิทธิภาพขั้นสูง รวมฟีเจอร์ขั้นสูง เช่น การเข้าถึงตามบทบาท การวิเคราะห์ หรือ api ของบุคคลที่สามสำหรับการชำระเงิน สำรวจเอกสารทางการของ back4app เพื่อข้อมูลเชิงลึกเกี่ยวกับความปลอดภัย บันทึก และการตรวจสอบ ตรวจสอบบทเรียนเพิ่มเติม เพื่อรวมแบ็กเอนด์นี้กับบริการเรียลไทม์หรือสร้างเว็บไซต์ที่มีการอัปเดตสด โดยการปฏิบัติตามกลยุทธ์เหล่านี้ โครงการ symfony ของคุณจะได้รับแบ็กเอนด์ที่ทรงพลังและมีประสิทธิภาพ ใช้ back4app เพื่อทำให้การบำรุงรักษาง่ายขึ้นและพัฒนาความสามารถของแอปพลิเคชันของคุณอย่างรวดเร็ว ขอให้โชคดีในการสร้างผลงานชิ้นเอก symfony ชิ้นถัดไปของคุณ!