Quickstarters
Feature Overview
How to Build a Backend for PHP?
38 นาที
บทนำ ในบทเรียนนี้ คุณจะได้เรียนรู้ วิธีการสร้างแบ็กเอนด์สำหรับ php โดยใช้ back4app เพื่อขับเคลื่อนแอปพลิเคชันเว็บแบบไดนามิกในฝั่งเซิร์ฟเวอร์ เราจะมุ่งเน้นไปที่การรวมบริการหลักของ back4app เช่น การจัดการฐานข้อมูล, ฟังก์ชัน cloud code, rest และ graphql apis, การตรวจสอบสิทธิ์ผู้ใช้, และการสอบถามแบบเรียลไทม์ โดยการทำตามขั้นตอนเหล่านี้ คุณจะสร้างแบ็กเอนด์ที่ปลอดภัย ขยายขนาดได้ และมีความแข็งแกร่ง ซึ่งคุณสามารถใช้ในโปรเจกต์ php ของคุณ เราจะมาดูว่าทำไม back4app จึงเร่งการพัฒนาแบ็กเอนด์เมื่อเปรียบเทียบกับการสร้างทุกอย่างจากศูนย์ เพื่อที่คุณจะได้ประหยัดเวลาและความพยายาม คุณจะค้นพบวิธีการนำระบบรักษาความปลอดภัยขั้นสูงไปใช้, กำหนดตารางงานด้วย cloud jobs, และเชื่อมต่อการรวมภายนอกด้วยเว็บฮุก ทั้งหมดนี้ในขณะที่พึ่งพาโครงสร้างพื้นฐานของ back4app เมื่อสิ้นสุด คุณจะพร้อมที่จะขยายแบ็กเอนด์พื้นฐานนี้ให้กลายเป็นการตั้งค่าการผลิตที่สมบูรณ์ หรือรวม apis ของบุคคลที่สามและตรรกะที่กำหนดเองสำหรับการใช้งานในโลกจริง ข้อกำหนดเบื้องต้น ในการทำตามบทเรียนนี้ คุณจะต้องมี บัญชี back4app และโครงการ back4app ใหม่ เริ่มต้นใช้งาน back4app https //www back4app com/docs/get started/new parse app หากคุณยังไม่มีบัญชี ให้สร้างบัญชีฟรีและทำตามคำแนะนำเพื่อเตรียมโครงการใหม่ของคุณ สภาพแวดล้อมการพัฒนา php พื้นฐาน คุณสามารถตั้งค่านี้ในเครื่องของคุณโดยติดตั้ง php หรือใช้สภาพแวดล้อมโฮสติ้งที่รองรับ php เอกสาร php อย่างเป็นทางการ https //www php net/docs php การสนับสนุน curl หรือวิธีการส่งคำขอ http การติดตั้ง php ส่วนใหญ่จะรวม curl ไว้โดยค่าเริ่มต้น การติดตั้ง curl (เอกสารอย่างเป็นทางการ) https //curl se/docs/install html ความคุ้นเคยกับพื้นฐานของแอปพลิเคชันเว็บ การเข้าใจ http, การเขียนสคริปต์ฝั่งเซิร์ฟเวอร์ และแนวคิดฐานข้อมูลพื้นฐานจะเป็นประโยชน์ ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดเบื้องต้นเหล่านี้ก่อนที่จะดำดิ่งสู่ขั้นตอนด้านล่าง การตั้งค่าโครงการ back4app ของคุณและเตรียมสภาพแวดล้อม php จะทำให้การติดตามง่ายขึ้น ขั้นตอนที่ 1 – การตั้งค่าโครงการ back4app สร้างโครงการใหม่ ขั้นตอนแรกในการสร้างแบ็กเอนด์ฝั่งเซิร์ฟเวอร์ของคุณบน back4app คือการสร้างโครงการใหม่ หากคุณยังไม่ได้ทำตามขั้นตอนเหล่านี้ เข้าสู่ระบบบัญชี back4app ของคุณ คลิกที่ปุ่ม “new app” ในแดชบอร์ด back4app ของคุณ ตั้งชื่อแอปของคุณ (เช่น “php backend tutorial”) เมื่อสร้างเสร็จ โครงการ back4app ใหม่ของคุณจะแสดงในแดชบอร์ด โครงการนี้จะเป็นพื้นฐานสำหรับขั้นตอนการกำหนดค่าที่จะเกิดขึ้น เชื่อมต่อกับ back4app ผ่าน rest api เนื่องจากเรากำลังทำงานกับ php โดยไม่มี sdk เฉพาะของ parse เราจะพึ่งพา back4app rest และ graphql apis สำหรับการสื่อสาร คุณจะต้องใช้ข้อมูลรับรองต่อไปนี้จากแดชบอร์ด back4app ของคุณ รหัสแอปพลิเคชัน rest api key parse server url (ปกติคือ https //parseapi back4app com ) คุณสามารถค้นหาเหล่านี้ได้โดยการไปที่ การตั้งค่าแอป หรือ ความปลอดภัย & คีย์ ของคุณ ใน php คุณสามารถทำการร้องขอ http โดยใช้ curl หรือไลบรารีอื่น ๆ ด้านล่างนี้คือตัวอย่างสั้น ๆ ของการส่งคำขอ post ไปยัง back4app $url = 'https //parseapi back4app com/classes/todo'; $data = array( 'title' => 'buy groceries', 'iscompleted' => false ); $payload = json encode($data); $ch = curl init($url); curl setopt($ch, curlopt post, 1); curl setopt($ch, curlopt postfields, $payload); curl setopt($ch, curlopt httpheader, array( 'x parse application id your application id', 'x parse rest api key your rest api key', 'content type application/json' )); curl setopt($ch, curlopt returntransfer, true); $result = curl exec($ch); curl close($ch); echo $result; // print api response โค้ดนี้แสดงให้เห็นว่าคุณจะเชื่อมต่อแอปพลิเคชัน php ของคุณกับ back4app backend ได้อย่างไร ปรับเปลี่ยน your application id , your rest api key , และพารามิเตอร์อื่น ๆ ให้ตรงกับคีย์ของคุณเอง ด้วยวิธีนี้ โค้ดฝั่งเซิร์ฟเวอร์ของคุณสามารถอ่านและเขียนข้อมูลในโปรเจกต์ใหม่ของคุณได้ ขั้นตอนที่ 2 – การตั้งค่าฐานข้อมูล การสร้างโมเดลข้อมูล เมื่อโปรเจกต์ back4app ของคุณพร้อมแล้ว ถึงเวลาที่จะจัดระเบียบฐานข้อมูลของคุณ โมเดลข้อมูลจะกำหนดวิธีการจัดระเบียบข้อมูลของแอปพลิเคชันเว็บของคุณ ตัวอย่างเช่น คุณอาจเก็บงานหรือโพสต์บล็อกในคลาสต่างๆ ไปที่ส่วน “ฐานข้อมูล” ในแดชบอร์ด back4app ของคุณ สร้างคลาสใหม่ (เช่น “todo”) พร้อมฟิลด์เช่น title (string) และ iscompleted (boolean) back4app ช่วยให้คุณสร้างคอลัมน์สำหรับประเภทข้อมูลต่างๆ รวมถึง string , number , boolean , pointer , relation , file , และอื่นๆ คุณยังสามารถให้สคีมาถูกสร้างโดยอัตโนมัติเมื่อคุณบันทึกวัตถุจากสคริปต์ php ของคุณเป็นครั้งแรก การสร้างโมเดลข้อมูลโดยใช้เอเจนต์ ai เอเจนต์ ai ของ back4app สามารถทำให้การสร้างโมเดลข้อมูลเป็นอัตโนมัติ เปิดเอเจนต์ ai จากแดชบอร์ด ให้คำอธิบาย เช่น “กรุณาสร้างแอป todo ใหม่ที่ back4app พร้อมกับสคีมาคลาสที่สมบูรณ์ ” ให้เอเจนต์ ai สร้างสคีมาฐานข้อมูลให้คุณ ฟีเจอร์นี้สามารถช่วยประหยัดเวลาและทำให้แอปฝั่งเซิร์ฟเวอร์ของคุณมีความสอดคล้องกัน การอ่านและเขียนข้อมูล (rest api) เพื่อบันทึกวัตถุใหม่ใน todo คลาสโดยใช้ rest คุณสามารถส่งคำขอ post 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 คุณจะทำสิ่งที่คล้ายกันด้วย curl ตัวอย่างเช่น $url = 'https //parseapi back4app com/classes/todo'; $data = array('title' => 'buy groceries', 'iscompleted' => false); // (same curl setup as before) เพื่อดึงข้อมูลรายการ todo ทั้งหมด 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) back4app ยังรองรับ graphql คุณสามารถแทรกหรือดึงข้อมูลโดยการส่งคำถามหรือการเปลี่ยนแปลง graphql ไปยัง https //parseapi back4app com/graphql แทรก (การเปลี่ยนแปลง) mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } คำถาม query { todos { edges { node { objectid title iscompleted } } } } ทำงานกับ live queries (ไม่บังคับ) หากคุณต้องการการอัปเดตแบบเรียลไทม์ในแอปพลิเคชันเว็บของคุณ ให้พิจารณา live queries เปิดใช้งาน live queries ในแดชบอร์ด back4app ของคุณ จากนั้นใช้วิธี websocket จากสภาพแวดล้อม php ของคุณ (หรือไคลเอนต์แยกต่างหาก) เพื่อสมัครรับการเปลี่ยนแปลง ขณะที่มันเป็นเรื่องปกติมากขึ้นในไคลเอนต์ javascript คุณสามารถตั้งค่าซ็อกเก็ตแยกใน php ได้หากจำเป็น สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ เอกสาร live queries ของ back4app https //www back4app com/docs/javascript/live queries ขั้นตอนที่ 3 – การใช้ความปลอดภัยด้วย acls และ clps ภาพรวมสั้น ๆ acls (access control lists) และ clps (class level permissions) ปกป้องข้อมูลของคุณโดยการควบคุมว่าใครสามารถอ่านหรือเขียนวัตถุได้ สิ่งนี้ช่วยปกป้องแบ็กเอนด์ของคุณจากการเข้าถึงที่ไม่ได้รับอนุญาต ขั้นตอนทีละขั้นตอน ตั้งค่าการอนุญาตระดับคลาส (clps) ในแดชบอร์ดฐานข้อมูล คุณสามารถจำกัดการอ่าน/เขียนสาธารณะหรือกำหนดให้ต้องมีการตรวจสอบสิทธิ์ กำหนดค่า acls บนแต่ละวัตถุหากคุณต้องการควบคุมอย่างละเอียด acl สามารถระบุการเข้าถึงการอ่าน/เขียนสำหรับผู้ใช้หรือบทบาทเฉพาะ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ แนวทางความปลอดภัยของแอป https //www back4app com/docs/security/parse security ขั้นตอนที่ 4 – การเขียนฟังก์ชัน cloud code ทำไมต้องใช้ cloud code cloud code ช่วยให้คุณสามารถรัน javascript ฝั่งเซิร์ฟเวอร์สำหรับงานต่าง ๆ เช่น โลจิกทางธุรกิจ ทริกเกอร์ หรือการตรวจสอบ โดยไม่ต้องตั้งค่าเซิร์ฟเวอร์ของคุณเอง ด้วยวิธีนี้ คุณสามารถเก็บโค้ดบางส่วนไว้เป็นความลับ ทำการแปลงข้อมูล และอื่น ๆ ฟังก์ชันตัวอย่าง ฟังก์ชัน cloud code ที่ง่ายซึ่งคำนวณความยาวของข้อความ // main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); ฟังก์ชันนี้สามารถเรียกใช้จากสคริปต์ php ของคุณโดยใช้ 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 '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength การปรับใช้ คุณสามารถปรับใช้ cloud code ผ่าน back4app cli https //www back4app com/docs/local development/parse cli หรือ back4app dashboard โมดูล npm หากคุณต้องการไลบรารีเพิ่มเติม ให้ติดตั้งด้วย npm และนำเข้าใน cloud code ของคุณ สิ่งนี้มีประโยชน์สำหรับการรวมเซิร์ฟเวอร์ด้านที่ซับซ้อน ขั้นตอนที่ 5 – การกำหนดค่าการรับรองความถูกต้อง เปิดใช้งานการรับรองความถูกต้อง โดยค่าเริ่มต้น โครงการ back4app ของคุณมีการรับรองความถูกต้องของผู้ใช้ผ่าน parse user คลาส คุณสามารถควบคุมได้ว่าผู้ใช้ต้องยืนยันอีเมลของตนหรือเพียงแค่เข้าสู่ระบบผ่านชื่อผู้ใช้/รหัสผ่าน ลงทะเบียน, เข้าสู่ระบบ, ออกจากระบบ (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 เข้าสู่ระบบด้วยโซเชียล การเข้าสู่ระบบด้วยโซเชียล (google, apple, facebook) เป็นไปได้โดยการกำหนดค่า oauth flows สำหรับคำแนะนำ โปรดดูที่ เอกสารการเข้าสู่ระบบด้วยโซเชียล https //www back4app com/docs/platform/sign in with apple ขั้นตอนที่ 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/jpeg" \\ \ data binary "@/path/to/myimage jpg" \\ https //parseapi back4app com/files/myimage jpg การตอบกลับ json จะมี url ของไฟล์ คุณสามารถเก็บ url นี้ในคลาสของคุณเพื่ออ้างอิงไฟล์ที่อัปโหลด ตัวอย่าง { "name" "myimage jpg", "url" "https //myapp back4app io/files/myimage jpg" } ข้อพิจารณาด้านความปลอดภัย คุณสามารถอนุญาตให้มีการอัปโหลดไฟล์จากผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์เท่านั้นหรือจากบทบาทบางอย่าง กำหนดกฎการอัปโหลดไฟล์ในการตั้งค่าเซิร์ฟเวอร์ ขั้นตอนที่ 7 – การตรวจสอบอีเมลและการรีเซ็ตรหัสผ่าน ภาพรวม การตรวจสอบอีเมลช่วยให้แน่ใจว่าใช้ที่อยู่อีเมลที่ถูกต้องเท่านั้น การรีเซ็ตรหัสผ่านช่วยให้ผู้ใช้สามารถกู้คืนบัญชีของตนได้อย่างปลอดภัย การกำหนดค่าดashboard ในแดชบอร์ด back4app , ไปที่ การตั้งค่าแอป > อีเมล เปิดใช้งานการตรวจสอบอีเมล และตั้งค่าเทมเพลตที่คุณต้องการ เปิดใช้งานการรีเซ็ตรหัสผ่าน เพื่อให้ผู้ใช้สามารถกู้คืนบัญชี การดำเนินการ เมื่อเปิดใช้งาน การลงทะเบียนของผู้ใช้จะกระตุ้นให้มีการส่งอีเมลยืนยัน คุณยังสามารถเรียกคืนรหัสผ่านได้โดยใช้ 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 '{"email" "alice\@example com"}' \\ https //parseapi back4app com/requestpasswordreset ขั้นตอนที่ 8 – การกำหนดตารางงานด้วย cloud jobs cloud jobs ทำอะไร cloud jobs ช่วยให้คุณสามารถทำงานอัตโนมัติ เช่น การลบข้อมูลเก่าหรือการส่งอีเมลเป็นประจำ คุณสามารถเขียนมันใน main js และกำหนดตารางงานในแดชบอร์ด back4app ตัวอย่าง // 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); } }); นำไปใช้ โค้ดนี้ไปยัง back4app กำหนดตาราง งานในแดชบอร์ดภายใต้ การตั้งค่าแอป > การตั้งค่าเซิร์ฟเวอร์ > งานเบื้องหลัง ขั้นตอนที่ 9 – การรวม webhooks คำจำกัดความ webhooks ช่วยให้คุณส่งคำขอ http ไปยังบริการอื่นเมื่อเกิดเหตุการณ์ เช่น การสร้างระเบียนใหม่ในคลาส back4app ของคุณ ซึ่งมีประโยชน์สำหรับการรวมภายนอก รวมถึงแพลตฟอร์มการชำระเงิน เครื่องมือการตลาดทางอีเมล หรือการแจ้งเตือน slack การกำหนดค่า เปิดแผง webhooks ในแดชบอร์ด back4app ของคุณ > เพิ่มเติม > webhooks เพิ่ม webhook ใหม่ โดยใช้ url จุดสิ้นสุดที่คุณต้องการส่งข้อมูลเหตุการณ์ เลือกทริกเกอร์ (เช่น การสร้างวัตถุ การอัปเดต หรือการลบ) คุณยังสามารถกำหนด webhooks ใน cloud code ทริกเกอร์ โดยทำการร้องขอ http ด้วยโมดูล node js เช่น axios ขั้นตอนที่ 10 – สำรวจแผงผู้ดูแล back4app แอปผู้ดูแล back4app admin app เป็นอินเทอร์เฟซที่มุ่งเน้นโมเดลซึ่งช่วยให้ผู้ใช้ที่ไม่ใช่เทคนิคหรือผู้ดูแลระบบสามารถจัดการข้อมูลได้โดยไม่ต้องเขียนโค้ด มันมอบประสบการณ์การจัดการข้อมูลที่เข้าใจง่ายกว่าหน้าจอ parse มาตรฐาน จะหามันได้ที่ไหน เปิดใช้งานแอปผู้ดูแล โดยไปที่ app dashboard > more > admin app คลิก “เปิดใช้งานแอปผู้ดูแล” และกำหนดค่าข้อมูลประจำตัวผู้ดูแลของคุณ เลือกซับโดเมน เพื่อเข้าถึงแอปผู้ดูแล เข้าสู่ระบบด้วยข้อมูลประจำตัวผู้ดูแลที่คุณสร้างขึ้นใหม่เพื่อเริ่มจัดการบันทึกฐานข้อมูล บัญชีผู้ใช้ บทบาท และอื่นๆ บทสรุป ในบทเรียนนี้ คุณได้เรียนรู้วิธีการสร้างแบ็กเอนด์ฝั่งเซิร์ฟเวอร์สำหรับ php แอปพลิเคชันเว็บของคุณโดยใช้ back4app คุณได้ตั้งค่าฐานข้อมูลที่ปลอดภัย ใช้ฟีเจอร์เรียลไทม์ กำหนดตรรกะที่กำหนดเองใน cloud code และสำรวจการตรวจสอบสิทธิ์ผู้ใช้ การจัดเก็บไฟล์ และงานที่กำหนดเวลา คุณยังได้เห็นว่าเว็บฮุกและแผงผู้ดูแลระบบสามารถรวมเข้ากับบริการภายนอกและทำให้การจัดการข้อมูลง่ายขึ้นได้อย่างไร ด้วยพื้นฐานนี้ คุณมีแบ็กเอนด์ที่ยืดหยุ่นและปรับขนาดได้ซึ่งคุณสามารถขยายได้ตามต้องการสำหรับโปรเจกต์ php ถัดไปของคุณ ดำเนินการสำรวจเทคนิคขั้นสูง บทบาทที่กำหนดเอง หรือ api ของบุคคลที่สามเพื่อทำให้แอปพลิเคชันของคุณมีพลังและพลศาสตร์มากยิ่งขึ้น ขั้นตอนถัดไป ปรับปรุงแอปพลิเคชัน php ที่พร้อมใช้งานในผลิตภัณฑ์ โดยการเพิ่มการแคช การกระจายโหลด หรือความปลอดภัยขั้นสูง เพิ่มการควบคุมการเข้าถึงตามบทบาท หรือกระบวนการตรวจสอบสิทธิ์ที่ไม่ซ้ำกัน หากฐานผู้ใช้ของคุณต้องการ ปรึกษาเอกสารทางการของ back4app เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการปรับแต่งประสิทธิภาพ บันทึก และการวิเคราะห์ ลองทำบทเรียนเพิ่มเติม และใช้เทคนิคที่เรียนรู้ที่นี่เพื่อสร้างโซลูชันในโลกจริง ตั้งแต่การค้าอิเล็กทรอนิกส์ไปจนถึงแพลตฟอร์มโซเชียล