เริ่มต้นใช้งาน XMF
2.5.x ✅ 4.0.x ✅
คู่มือนี้ครอบคลุมแนวคิดพื้นฐานของ XOOPS Module Framework (XMF) และวิธีการเริ่มใช้งานในโมดูลของคุณ
ข้อกำหนดเบื้องต้น
หัวข้อที่มีชื่อว่า “ข้อกำหนดเบื้องต้น”- XOOPS 2.5.8 หรือใหม่กว่าที่ติดตั้ง
- PHP 7.2 หรือใหม่กว่า
- ความเข้าใจพื้นฐานเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ PHP
ทำความเข้าใจกับเนมสเปซ
หัวข้อที่มีชื่อว่า “ทำความเข้าใจกับเนมสเปซ”XMF ใช้ PHP เนมสเปซ เพื่อจัดระเบียบคลาสและหลีกเลี่ยงความขัดแย้งในการตั้งชื่อ คลาส XMF ทั้งหมดอยู่ในเนมสเปซ Xmf
ปัญหาอวกาศโลก
หัวข้อที่มีชื่อว่า “ปัญหาอวกาศโลก”หากไม่มีเนมสเปซ คลาส PHP ทั้งหมดจะใช้พื้นที่ร่วมกัน สิ่งนี้อาจทำให้เกิดความขัดแย้ง:
<?php// This would conflict with PHP's built-in ArrayObjectclass ArrayObject { public function doStuff() { // ... }}// Fatal error: Cannot redeclare class ArrayObjectโซลูชันเนมสเปซ
หัวข้อที่มีชื่อว่า “โซลูชันเนมสเปซ”เนมสเปซสร้างบริบทการตั้งชื่อแบบแยก:
<?phpnamespace MyNamespace;
class ArrayObject { public function doStuff() { // ... }}// No conflict - this is \MyNamespace\ArrayObjectการใช้ XMF เนมสเปซ
หัวข้อที่มีชื่อว่า “การใช้ XMF เนมสเปซ”คุณสามารถอ้างอิงคลาส XMF ได้หลายวิธี:
เส้นทางเนมสเปซแบบเต็ม:
$helper = \Xmf\Module\Helper::getHelper('mymodule');พร้อมข้อความการใช้งาน:
use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');นำเข้าหลายรายการ:
use Xmf\Request;use Xmf\Module\Helper;use Xmf\Module\Helper\Permission;
$input = Request::getString('input', '');$helper = Helper::getHelper('mymodule');$perm = new Permission();โหลดอัตโนมัติ
หัวข้อที่มีชื่อว่า “โหลดอัตโนมัติ”สิ่งอำนวยความสะดวกที่ยิ่งใหญ่ที่สุดของ XMF คือการโหลดคลาสอัตโนมัติ คุณไม่จำเป็นต้องรวมไฟล์คลาส XMF ด้วยตนเอง
กำลังโหลดแบบดั้งเดิม XOOPS
หัวข้อที่มีชื่อว่า “กำลังโหลดแบบดั้งเดิม XOOPS”วิธีเก่าต้องการการโหลดที่ชัดเจน:
XoopsLoad('xoopsrequest');$cleanInput = XoopsRequest::getString('input', '');XMF กำลังโหลดอัตโนมัติ
หัวข้อที่มีชื่อว่า “XMF กำลังโหลดอัตโนมัติ”ด้วย XMF คลาสจะโหลดโดยอัตโนมัติเมื่อมีการอ้างอิง:
$input = Xmf\Request::getString('input', '');หรือด้วยคำสั่ง use:
use Xmf\Request;
$input = Request::getString('input', '');$id = Request::getInt('id', 0);$op = Request::getCmd('op', 'display');ตัวโหลดอัตโนมัติเป็นไปตามมาตรฐาน PSR-4 และยังจัดการการขึ้นต่อกันที่ XMF พึ่งพาด้วย
ตัวอย่างการใช้งานพื้นฐาน
หัวข้อที่มีชื่อว่า “ตัวอย่างการใช้งานพื้นฐาน”อินพุตคำขอการอ่าน
หัวข้อที่มีชื่อว่า “อินพุตคำขอการอ่าน”use Xmf\Request;
// Get integer value with default of 0$id = Request::getInt('id', 0);
// Get string value with default empty string$title = Request::getString('title', '');
// Get command (alphanumeric, lowercase)$op = Request::getCmd('op', 'list');
// Get email with validation$email = Request::getEmail('email', '');
// Get from specific hash (POST, GET, etc.)$formData = Request::getString('data', '', 'POST');การใช้ตัวช่วยโมดูล
หัวข้อที่มีชื่อว่า “การใช้ตัวช่วยโมดูล”use Xmf\Module\Helper;
// Get helper for your module$helper = Helper::getHelper('mymodule');
// Read module configuration$itemsPerPage = $helper->getConfig('items_per_page', 10);$enableFeature = $helper->getConfig('enable_feature', false);
// Access the module object$module = $helper->getModule();$version = $module->getVar('version');
// Get a handler$itemHandler = $helper->getHandler('items');
// Load language file$helper->loadLanguage('admin');
// Check if current moduleif ($helper->isCurrentModule()) { // We are in this module}
// Check admin rightsif ($helper->isUserAdmin()) { // User has admin access}เส้นทางและ URL ผู้ช่วยเหลือ
หัวข้อที่มีชื่อว่า “เส้นทางและ URL ผู้ช่วยเหลือ”use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');
// Get module URL$moduleUrl = $helper->url('images/logo.png');// Returns: https://example.com/modules/mymodule/images/logo.png
// Get module path$modulePath = $helper->path('templates/view.tpl');// Returns: /var/www/html/modules/mymodule/templates/view.tpl
// Upload paths$uploadUrl = $helper->uploadUrl('files/document.pdf');$uploadPath = $helper->uploadPath('files/document.pdf');การดีบักด้วย XMF
หัวข้อที่มีชื่อว่า “การดีบักด้วย XMF”XMF มีเครื่องมือแก้ไขข้อบกพร่องที่เป็นประโยชน์:
// Dump a variable with nice formatting\Xmf\Debug::dump($myVariable);
// Dump multiple variables\Xmf\Debug::dump($var1, $var2, $var3);
// Dump POST data\Xmf\Debug::dump($_POST);
// Show a backtrace\Xmf\Debug::backtrace();เอาต์พุตการแก้ไขข้อบกพร่องสามารถยุบได้ และแสดงออบเจ็กต์และอาร์เรย์ในรูปแบบที่อ่านง่าย
ข้อเสนอแนะโครงสร้างโครงการ
หัวข้อที่มีชื่อว่า “ข้อเสนอแนะโครงสร้างโครงการ”เมื่อสร้างโมดูลที่ใช้ XMF ให้จัดระเบียบโค้ดของคุณ:
mymodule/ admin/ index.php menu.php class/ Helper.php # Optional custom helper ItemHandler.php # Your handlers include/ common.php language/ english/ main.php admin.php modinfo.php templates/ mymodule_index.tpl index.php xoops_version.phpรูปแบบการรวมทั่วไป
หัวข้อที่มีชื่อว่า “รูปแบบการรวมทั่วไป”จุดเข้าโมดูลทั่วไป:
<?phpuse Xmf\Request;use Xmf\Module\Helper;
require_once dirname(dirname(__DIR__)) . '/mainfile.php';
$helper = Helper::getHelper(basename(__DIR__));
// Get operation from request$op = Request::getCmd('op', 'list');$id = Request::getInt('id', 0);
// Include XOOPS headerrequire_once XOOPS_ROOT_PATH . '/header.php';
// Your module logic hereswitch ($op) { case 'view': // Handle view break; case 'list': default: // Handle list break;}
// Include XOOPS footerrequire_once XOOPS_ROOT_PATH . '/footer.php';ขั้นตอนต่อไป
หัวข้อที่มีชื่อว่า “ขั้นตอนต่อไป”เมื่อคุณเข้าใจพื้นฐานแล้ว ให้สำรวจ:
- XMF-คำขอ - เอกสารการจัดการคำขอโดยละเอียด
- XMF-Module-Helper - การอ้างอิงตัวช่วยโมดูลที่สมบูรณ์
- ../Recipes/Permission-Helper - การจัดการสิทธิ์ของผู้ใช้
- ../Recipes/Module-Admin-Pages - สร้างอินเทอร์เฟซผู้ดูแลระบบ
ดูเพิ่มเติม
หัวข้อที่มีชื่อว่า “ดูเพิ่มเติม”- ../XMF-Framework - ภาพรวมของเฟรมเวิร์ก
- ../อ้างอิง/JWT - JSON รองรับโทเค็นเว็บ
- ../อ้างอิง/ฐานข้อมูล - ยูทิลิตี้ฐานข้อมูล
#xmf #เริ่มต้นใช้งาน #namespaces #การโหลดอัตโนมัติ #พื้นฐาน