การย้ายแอปของคุณจาก WordPress ไปยัง PHP framework หรือ CMS อื่น
GraphQL schema ที่ Gato GraphQL จัดเตรียมไว้มีฟิลด์สำหรับดึงข้อมูล WordPress ได้แก่ posts, users, comments, tags, categories และอื่นๆ
โค้ดใน PHP resolvers ที่ดึงข้อมูล WordPress นั้นขึ้นอยู่กับ WordPress โค้ดดังกล่าวไม่สามารถรันบนแอปที่ไม่ใช่ WordPress ได้
อย่างไรก็ตาม Gato GraphQL มี resolver เหล่านี้แต่ละตัวที่ถูก implement ผ่าน 2 แพ็คเกจ:
- แพ็คเกจ "vanilla" PHP ที่บรรจุโค้ดทั่วไปทั้งหมด
- แพ็คเกจเฉพาะ WordPress ที่บรรจุการเรียกใช้เมธอด WordPress จริงๆ ที่ตอบสนอง resolver นั้น
ตัวอย่างเช่น ใน GraphQL query นี้:
{
posts {
id
title
}
}...ตรรกะสำหรับการดึงข้อมูล posts ประกอบด้วย:
- ฟิลด์
Root.posts: อยู่ใน แพ็คเกจpostsทั่วไป - การ resolve สำหรับ WordPress ผ่าน เมธอด
get_posts: อยู่ใน แพ็คเกจposts-wpเฉพาะ WordPress
การแบ่งโค้ดระหว่างแพ็คเกจที่ไม่ใช่ WordPress/WordPress อยู่ที่ประมาณ 80/20% ซึ่งหมายความว่า โค้ด 80% สามารถนำกลับมาใช้ใหม่กับ framework/CMS อื่น และมีเพียง โค้ด 20% เท่านั้นที่ต้องถูก implement ใหม่
ยิ่งไปกว่านั้น ฟังก์ชันการทำงานทั้งหมดใน Gato GraphQL ถูกส่งมอบผ่านโมดูล และโมดูลสามารถเปิด/ปิดใช้งานได้ตามต้องการ

โมดูล เป็นฟีเจอร์ที่ implement เพื่อวัตถุประสงค์ด้านความปลอดภัย: หากคุณไม่ต้องการเปิดเผยข้อมูลผู้ใช้ใน public API คุณสามารถปิดใช้งานโมดูล Users ได้ และฟิลด์ที่เกี่ยวข้อง (เช่น Root.users) จะไม่ถูกเพิ่มเข้าไปใน schema เลย
โมดูลถูก map ตรงไปยังแพ็คเกจ PHP ที่อยู่เบื้องหลัง ดังนั้น เมื่อรัน Gato GraphQL เป็นแอปแบบ standalone เราสามารถโหลดเฉพาะโมดูล/แพ็คเกจที่เราต้องการ และไม่โหลดสิ่งอื่นๆ
ตัวอย่างเช่น หากแอปพลิเคชันของคุณแสดงข้อมูลเฉพาะ posts, categories และ tags ก็จำเป็นต้องโหลดเพียงแพ็คเกจ posts-wp, categories-wp และ tags-wp (พร้อมกับ dependencies ของพวกมัน) เท่านั้น
จากนั้น เมื่อย้ายออกจาก WordPress (เช่น ไปยัง Laravel หรือ Symfony) มีเพียงแพ็คเกจเฉพาะ WordPress 3 ตัวนั้นเท่านั้นที่ต้องถูก implement ใหม่สำหรับ framework/CMS ใหม่ และไม่มีอะไรอื่นอีก