Kom godt i gang med XMF
2.5.x ✅ 4.0.x ✅
Denne vejledning dækker de grundlæggende begreber i XOOPS Module Framework (XMF), og hvordan du begynder at bruge det i dine moduler.
Forudsætninger
Sektion kaldt “Forudsætninger”- XOOPS 2.5.8 eller nyere installeret
- PHP 7.2 eller nyere
- Grundlæggende forståelse for PHP objektorienteret programmering
Forstå navnerum
Sektion kaldt “Forstå navnerum”XMF bruger PHP navnerum til at organisere sine klasser og undgå navnekonflikter. Alle XMF-klasser er i Xmf-navneområdet.
Globalt rumproblem
Sektion kaldt “Globalt rumproblem”Uden navnerum deler alle PHP-klasser et globalt rum. Dette kan forårsage konflikter:
<?php// This would conflict with PHP's built-in ArrayObjectclass ArrayObject { public function doStuff() { // ... }}// Fatal error: Cannot redeclare class ArrayObjectNavnerumsløsning
Sektion kaldt “Navnerumsløsning”Navneområder skaber isolerede navngivningskontekster:
<?phpnamespace MyNamespace;
class ArrayObject { public function doStuff() { // ... }}// No conflict - this is \MyNamespace\ArrayObjectBrug af XMF navnerum
Sektion kaldt “Brug af XMF navnerum”Du kan referere til XMF-klasser på flere måder:
Fuld navneområdesti:
$helper = \Xmf\Module\Helper::getHelper('mymodule');Med brugserklæring:
use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');Flere importer:
use Xmf\Request;use Xmf\Module\Helper;use Xmf\Module\Helper\Permission;
$input = Request::getString('input', '');$helper = Helper::getHelper('mymodule');$perm = new Permission();Autoloading
Sektion kaldt “Autoloading”En af XMF’ største bekvemmeligheder er automatisk klasseindlæsning. Du behøver aldrig manuelt at inkludere XMF klassefiler.
Traditionel XOOPS Indlæser
Sektion kaldt “Traditionel XOOPS Indlæser”Den gamle måde krævede eksplicit indlæsning:
XoopsLoad('xoopsrequest');$cleanInput = XoopsRequest::getString('input', '');XMF Autoloader
Sektion kaldt “XMF Autoloader”Med XMF indlæses klasser automatisk, når der henvises til:
$input = Xmf\Request::getString('input', '');Eller med en brugserklæring:
use Xmf\Request;
$input = Request::getString('input', '');$id = Request::getInt('id', 0);$op = Request::getCmd('op', 'display');Autoloaderen følger PSR-4 standarden og administrerer også afhængigheder, som XMF er afhængig af.
Eksempler på grundlæggende brug
Sektion kaldt “Eksempler på grundlæggende brug”Læseanmodningsinput
Sektion kaldt “Læseanmodningsinput”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');Brug af modulhjælperen
Sektion kaldt “Brug af modulhjælperen”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}Sti og URL hjælpere
Sektion kaldt “Sti og URL hjælpere”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');Fejlretning med XMF
Sektion kaldt “Fejlretning med XMF”XMF giver nyttige fejlfindingsværktøjer:
// 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();Debug-outputtet er sammenklappeligt og viser objekter og arrays i et letlæseligt format.
Projektstrukturanbefaling
Sektion kaldt “Projektstrukturanbefaling”Når du bygger XMF-baserede moduler, skal du organisere din kode:
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.phpFælles inkluderende mønster
Sektion kaldt “Fælles inkluderende mønster”Et typisk modulindgangspunkt:
<?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';Næste trin
Sektion kaldt “Næste trin”Nu hvor du forstår det grundlæggende, kan du udforske:
- XMF-Request - Detaljeret dokumentation for anmodningshåndtering
- XMF-Module-Helper - Komplet modulhjælpereference
- ../Recipes/Permission-Helper - Håndtering af brugertilladelser
- ../Recipes/Module-Admin-Pages - Opbygning af admin-grænseflader
Se også
Sektion kaldt “Se også”- ../XMF-Framework - Rammeoversigt
- ../Reference/JWT - JSON Web Token support
- ../Reference/Database - Databaseværktøjer
#xmf #kom godt i gang #navnerum #autoloading #basics