شروع کار با XMF
2.5.x ✅ 4.0.x ✅
این راهنما مفاهیم اساسی چارچوب ماژول XOOPS (XMF) و نحوه شروع استفاده از آن در ماژول های خود را پوشش می دهد.
پیش نیاز
Section titled “پیش نیاز”- XOOPS 2.5.8 یا بالاتر نصب شده است
- PHP 7.2 یا بالاتر
- درک اولیه از برنامه نویسی شی گرا PHP
درک فضاهای نام
Section titled “درک فضاهای نام”XMF از فضاهای نام PHP برای سازماندهی کلاس های خود و جلوگیری از تداخل نامگذاری استفاده می کند. تمام کلاس های XMF در فضای نام XMF قرار دارند.
مشکل فضای جهانی
Section titled “مشکل فضای جهانی”بدون فضاهای نام، تمام کلاس های PHP یک فضای جهانی مشترک دارند. این می تواند باعث درگیری شود:
<?php// This would conflict with PHP's built-in ArrayObjectclass ArrayObject { public function doStuff() { // ... }}// Fatal error: Cannot redeclare class ArrayObjectراه حل فضاهای نام
Section titled “راه حل فضاهای نام”فضاهای نام زمینه های نامگذاری مجزا را ایجاد می کنند:
<?phpnamespace MyNamespace;
class ArrayObject { public function doStuff() { // ... }}// No conflict - this is \MyNamespace\ArrayObjectبا استفاده از فضای نام XMF
Section titled “با استفاده از فضای نام 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();بارگذاری خودکار
Section titled “بارگذاری خودکار”یکی از بزرگترین امکانات XMF بارگیری کلاس خودکار است. شما هرگز نیازی به اضافه کردن دستی فایل های کلاس XMF ندارید.
XOOPS سنتی در حال بارگیری
Section titled “XOOPS سنتی در حال بارگیری”روش قدیمی نیاز به بارگذاری صریح داشت:
XoopsLoad('xoopsrequest');$cleanInput = XoopsRequest::getString('input', '');بارگیری خودکار XMF
Section titled “بارگیری خودکار XMF”با XMF، کلاس ها به صورت خودکار بارگیری می شوند:
$input = XMF\Request::getString('input', '');یا با عبارت استفاده:
use XMF\Request;
$input = Request::getString('input', '');$id = Request::getInt('id', 0);$op = Request::getCmd('op', 'display');بارگذاری خودکار از استاندارد PSR-4 پیروی می کند و همچنین وابستگی هایی را که XMF به آنها متکی است مدیریت می کند.
مثال های استفاده پایه
Section titled “مثال های استفاده پایه”ورودی درخواست خواندن
Section titled “ورودی درخواست خواندن”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');با استفاده از Module Helper
Section titled “با استفاده از Module Helper”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
Section titled “راهنماها و راهنماهای 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
Section titled “اشکال زدایی با 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();خروجی اشکال زدایی قابل جمع شدن است و اشیا و آرایه ها را در قالبی خوانا نمایش می دهد.
توصیه ساختار پروژه
Section titled “توصیه ساختار پروژه”هنگام ساخت ماژول های مبتنی بر 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مشترک شامل الگو
Section titled “مشترک شامل الگو”یک نقطه ورودی ماژول معمولی:
<?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';مراحل بعدی
Section titled “مراحل بعدی”اکنون که اصول اولیه را فهمیدید، بررسی کنید:
- XMF-Request - مستندات رسیدگی دقیق به درخواست
- XMF-Module-Helper - مرجع کمکی کامل ماژول
- ../Recipes/Permission-Helper - مدیریت مجوزهای کاربر
- ../Recipes/Module-Admin-Pages - ساخت رابط های مدیریت
همچنین ببینید
Section titled “همچنین ببینید”- ../XMF-Framework - نمای کلی چارچوب
- ../Reference/JWT - پشتیبانی از JSON Web Token
- ../Reference/Database - ابزارهای پایگاه داده
#xmf #شروع به کار #فضای نام #بارگیری خودکار #اصول