**รุ่นเสถียรใหม่ล่าสุด: [เวอร์ชัน 3.1.0 เปิดตัวเมื่อวันที่ 6 กรกฎาคม 2017]
เวอร์ชันเสถียรล่าสุดของเวอร์ชัน 2 สามารถพบได้ในสาขา v2
เข้าร่วมกับเราบน Slack บน qcubed.slack.com รับคำเชิญของคุณที่นี่
QCubed (ออกเสียงว่า 'Q' - cubed) เป็นเฟรมเวิร์กการพัฒนาแอปพลิเคชัน Rapid Model-View-Controller ของ PHP ที่รองรับ PHP5 (5.4 ขึ้นไป) และ PHP7 เป้าหมายของกรอบงานคือการประหยัดเวลาในการพัฒนางานที่ซ้ำซากจำเจ ช่วยให้คุณมีสมาธิกับสิ่งที่มีประโยชน์และสนุกสนาน QCubed เป็นเลิศในสถานการณ์ที่คุณมีโครงสร้างฐานข้อมูลขนาดใหญ่ที่คุณต้องการให้ผู้ใช้ใช้งานได้อย่างรวดเร็ว
ด้วย QCubed คุณไม่จำเป็นต้องจัดการกับ POST และ GET ที่มาจากเบราว์เซอร์ QCubed จะจัดการสิ่งนั้นให้คุณโดยอัตโนมัติและบรรจุข้อมูลลงในรูปแบบและการควบคุมเชิงวัตถุ การเขียนโปรแกรมด้วย QCubed ให้ความรู้สึกเหมือนกับการเขียนโปรแกรมแอปพลิเคชันเดสก์ท็อปเป็นอย่างมาก หากคุณคุ้นเคยกับ ASP ก็จะคล้ายกัน
ตัวสร้างโค้ดจะสร้างคลาสอ็อบเจ็กต์โดยอัตโนมัติด้วยรูปแบบและการควบคุมที่ตรงกันตามสคีมาฐานข้อมูลของคุณ ใช้แนวคิดของ ORM ซึ่งเป็นการทำแผนที่เชิงวัตถุเพื่อสร้างเลเยอร์โมเดลทั้งหมดให้กับคุณ
Codegen สามารถใช้ประโยชน์จากความสัมพันธ์ของคีย์นอกและข้อจำกัดของฟิลด์เพื่อสร้างโมเดลข้อมูลที่พร้อมใช้งาน พร้อมด้วยรูทีนการตรวจสอบความถูกต้องและวิธีการ CRUD ที่มีประสิทธิภาพ ช่วยให้คุณสามารถจัดการอ็อบเจ็กต์แทนที่จะออกคำสั่ง SQL อย่างต่อเนื่อง
ข้อมูลเพิ่มเติมพร้อมตัวอย่างมีอยู่ทางออนไลน์ที่ https://qcubed.eu/
การใช้ QQueries ช่วยให้สามารถโหลดโมเดลได้ง่ายแต่ทรงพลัง คลาส ORM ที่สร้างขึ้นทั้งหมดมีวิธีสืบค้นและ QQNodes ด้วยการใช้วิธีการเหล่านี้ การรับชุดย่อยของข้อมูลที่ซับซ้อนจึงค่อนข้างตรงไปตรงมา และสามารถใช้ได้กับฐานข้อมูลเชิงสัมพันธ์เกือบทุกประเภท
QCubed ใช้แนวคิดของ QForm เพื่อเก็บสถานะแบบฟอร์มระหว่างธุรกรรม POST QForm ทำหน้าที่เป็นตัวควบคุมและสามารถมี QControls ซึ่งเป็นส่วนประกอบ UI
QControls ทั้งหมด (รวมถึง QForm เอง) สามารถใช้เทมเพลตซึ่งเป็นเลเยอร์มุมมอง เพื่อทำให้โครงสร้าง MVC สมบูรณ์
QControls สามารถใช้ประโยชน์จาก FormState ของ QForm เพื่ออัปเดตตัวเองผ่านการเรียกกลับ Ajax ได้อย่างง่ายดายเหมือนกับ POST ของเซิร์ฟเวอร์ซิงโครนัส วิดเจ็ตหลัก jQuery UI ทั้งหมดมีให้เป็น QControls
QControls บางตัวประกอบด้วย:
วิธีที่ง่ายที่สุดในการเรียนรู้ QCubed คือการดูตัวอย่างการสอนที่ http://qcu.be/examples/
ผ่านระบบปลั๊กอิน QCubed ทำให้ง่ายต่อการจัดแพ็คเกจและส่งมอบการปรับปรุงและการเพิ่มเติมให้กับโค้ดเบสหลัก ปลั๊กอินสำหรับ QCubed เวอร์ชันที่ใช้งานอยู่ในปัจจุบันอยู่ในที่เก็บที่ขึ้นต้นด้วย ปลั๊กอิน
ขั้นตอนการติดตั้งอธิบายไว้โดยละเอียดที่นี่: คำแนะนำในการติดตั้ง
3.0 เป็นการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญจาก 2.x คุณควรเริ่มต้นใหม่โดยการสร้างโปรเจ็กต์ใหม่ สร้างโมเดลของคุณ โดยใช้ ModelConnectorEditor เพื่อปรับแต่งสิ่งที่สร้างขึ้นในตัวเชื่อมต่อ (เคยเรียกว่า MetaControls) จากนั้นคัดลอกโค้ดจากเวอร์ชันเก่าของคุณไปเป็นเวอร์ชันใหม่ คุณจะพบว่าหลายสิ่งที่คุณต้องทำด้วยมือตอนนี้เสร็จสิ้นในโค้ดที่สร้างขึ้น ดังนั้นอาจใช้เวลาไม่นานเท่าที่คุณคิด มากระโดดกันเถอะ :-)
v3.1 ขณะนี้มีการติดตามการเปลี่ยนแปลงในโมเดล แทนที่จะส่งออบเจ็กต์ทั้งหมดไปยังฐานข้อมูลทุกครั้งที่คุณบันทึกออบเจ็กต์ จะพุชเฉพาะข้อมูลที่มีการเปลี่ยนแปลงเท่านั้น เมื่อต้องการทำเช่นนี้ จะทำให้ตัวแปรสมาชิกในคลาสซูเปอร์คลาสของโมเดลที่สร้างขึ้นเป็นแบบส่วนตัว แทนที่จะได้รับการป้องกัน ซึ่งอาจจำเป็นต้องให้คุณเปลี่ยนโค้ดในคลาสย่อยของโมเดลของคุณ เพื่อช่วยในการเปลี่ยนแปลง คุณลักษณะตัวแปรส่วนตัวใหม่จะถูกปิดโดยค่าเริ่มต้น คุณจะต้องเปิดใช้งานโดยแก้ไขไฟล์ codegen_settings.xml และเพิ่มพารามิเตอร์ 'privateColumnVars="true"' ให้กับแท็ก createOptions ดูตัวอย่างไฟล์ codegen_settings.xml ในไดเร็กทอรี qcubed/install/project/configuration
ซึ่งจะทำให้ตัวแปรคอลัมน์ที่ได้รับการป้องกันทั้งหมดที่อยู่ในคลาส Gen เป็นส่วนตัว ดังนั้นคุณจะไม่สามารถเข้าถึงตัวแปรเหล่านั้นได้โดยตรงจากคลาสย่อย Model ของคุณ เช่น หากคุณมีคอลัมน์ "ชื่อ" ในตาราง คุณสามารถทำสิ่งต่อไปนี้
$ strName = $ this -> Name ;
หรือดีกว่า:
$ strName = $ this -> getName ();
แต่ไม่ใช่:
$ strName = $ this -> strName ;
$this->Name
เส้นทางไปยัง $this->getName()
นอกจากนี้ แทนที่จะเป็นสิ่งนี้:
$ this -> strName = $ strName ;
ทำ:
$ this -> setName ( $ strName );
หรือ
$ this -> Name = $ strName ;
ประโยชน์ของคุณลักษณะใหม่ ได้แก่ ประสิทธิภาพที่ดีขึ้น ลดข้อยกเว้น OptimisticLocking และป้องกันไม่ให้คุณเข้าถึงค่าที่ไม่ได้โหลดโดยไม่ได้ตั้งใจเนื่องจากส่วนคำสั่ง QSelect นอกจากนี้ QSelect ยังสามารถใช้เพื่อควบคุมสิ่งที่สร้างขึ้นเมื่อคุณแปลงออบเจ็กต์เป็นรูปแบบอื่น เช่น JSON
เวอร์ชัน 4.0 ถือเป็นการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญอีกประการหนึ่ง ซึ่งออกแบบมาเพื่อรองรับมาตรฐาน PSR-1, PSR-2 และ PSR-4 v4 เพิ่มเนมสเปซให้กับไฟล์คอร์และไลบรารีทั้งหมด ตัวอักษร 'Q' ที่หน้าคลาสหลักทั้งหมดหายไปแล้ว เนื่องจากนั่นเป็นวิธีหลักในการทำเนมสเปซของเราก่อนที่เนมสเปซจะพร้อมใช้งานใน PHP
ประกอบด้วยเครื่องมือที่ช่วยเปลี่ยนโค้ดของคุณจากโค้ด v3.x เป็น v4.0 โดยอัตโนมัติ ดูไฟล์ Readme ในพื้นที่เก็บข้อมูล qcubed/application สำหรับข้อมูลเพิ่มเติม
รายการการเปลี่ยนแปลงล่าสุดสามารถดูได้ที่ https://github.com/qcubed/qcubed/commits/master
QCubed ถูกแยกออกจาก QCodo ซึ่งเป็นโครงการโดย Michael Ho QCubed อาศัย JQuery และใช้ไลบรารี jQuery UI สำหรับการควบคุมหลักบางส่วน