Iniziare con XMF
2.5.x ✅ 4.0.x ✅
Questa guida copre i concetti fondamentali di XOOPS Module Framework (XMF) e come iniziare a utilizzarlo nei vostri moduli.
Prerequisiti
Sezione intitolata “Prerequisiti”- XOOPS 2.5.8 o successivo installato
- PHP 7.2 o successivo
- Conoscenza base della programmazione orientata agli oggetti in PHP
Comprensione dei Namespace
Sezione intitolata “Comprensione dei Namespace”XMF usa i namespace PHP per organizzare le sue classi e evitare conflitti di nominazione. Tutte le classi XMF sono nello spazio dei nomi Xmf.
Problema dello Spazio Globale
Sezione intitolata “Problema dello Spazio Globale”Senza namespace, tutte le classi PHP condividono uno spazio globale. Questo può causare conflitti:
<?php// Questo entrerebbe in conflitto con ArrayObject della classe PHPclass ArrayObject { public function doStuff() { // ... }}// Errore fatale: Cannot redeclare class ArrayObjectSoluzione dei Namespace
Sezione intitolata “Soluzione dei Namespace”I namespace creano contesti di naming isolati:
<?phpnamespace MyNamespace;
class ArrayObject { public function doStuff() { // ... }}// Nessun conflitto - questo è \MyNamespace\ArrayObjectUtilizzo dei Namespace XMF
Sezione intitolata “Utilizzo dei Namespace XMF”Potete referenziare le classi XMF in diversi modi:
Percorso completo dello spazio dei nomi:
$helper = \Xmf\Module\Helper::getHelper('mymodule');Con dichiarazione use:
use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');Importazioni multiple:
use Xmf\Request;use Xmf\Module\Helper;use Xmf\Module\Helper\Permission;
$input = Request::getString('input', '');$helper = Helper::getHelper('mymodule');$perm = new Permission();Autoloading
Sezione intitolata “Autoloading”Una delle maggiori comodità di XMF è il caricamento automatico delle classi. Non dovrete mai includere manualmente i file delle classi XMF.
Caricamento XOOPS Tradizionale
Sezione intitolata “Caricamento XOOPS Tradizionale”Il modo vecchio richiedeva caricamento esplicito:
XoopsLoad('xoopsrequest');$cleanInput = XoopsRequest::getString('input', '');Autoloading XMF
Sezione intitolata “Autoloading XMF”Con XMF, le classi si caricano automaticamente quando referenziate:
$input = Xmf\Request::getString('input', '');Oppure con una dichiarazione use:
use Xmf\Request;
$input = Request::getString('input', '');$id = Request::getInt('id', 0);$op = Request::getCmd('op', 'display');L’autoloader segue lo standard PSR-4 e gestisce anche le dipendenze di cui XMF si affida.
Esempi di Utilizzo di Base
Sezione intitolata “Esempi di Utilizzo di Base”Lettura dell’Input della Richiesta
Sezione intitolata “Lettura dell’Input della Richiesta”use Xmf\Request;
// Ottieni valore intero con default di 0$id = Request::getInt('id', 0);
// Ottieni valore stringa con default stringa vuota$title = Request::getString('title', '');
// Ottieni comando (alfanumerico, minuscolo)$op = Request::getCmd('op', 'list');
// Ottieni email con validazione$email = Request::getEmail('email', '');
// Ottieni da hash specifico (POST, GET, etc.)$formData = Request::getString('data', '', 'POST');Utilizzo del Module Helper
Sezione intitolata “Utilizzo del Module Helper”use Xmf\Module\Helper;
// Ottieni helper per il tuo modulo$helper = Helper::getHelper('mymodule');
// Leggi la configurazione del modulo$itemsPerPage = $helper->getConfig('items_per_page', 10);$enableFeature = $helper->getConfig('enable_feature', false);
// Accedi all'oggetto del modulo$module = $helper->getModule();$version = $module->getVar('version');
// Ottieni un handler$itemHandler = $helper->getHandler('items');
// Carica il file della lingua$helper->loadLanguage('admin');
// Controlla se modulo correnteif ($helper->isCurrentModule()) { // Siamo in questo modulo}
// Controlla i diritti di adminif ($helper->isUserAdmin()) { // L'utente ha accesso admin}Helper di Percorsi e URL
Sezione intitolata “Helper di Percorsi e URL”use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');
// Ottieni l'URL del modulo$moduleUrl = $helper->url('images/logo.png');// Ritorna: https://example.com/modules/mymodule/images/logo.png
// Ottieni il percorso del modulo$modulePath = $helper->path('templates/view.tpl');// Ritorna: /var/www/html/modules/mymodule/templates/view.tpl
// Percorsi di upload$uploadUrl = $helper->uploadUrl('files/document.pdf');$uploadPath = $helper->uploadPath('files/document.pdf');Debug con XMF
Sezione intitolata “Debug con XMF”XMF fornisce strumenti di debug utili:
// Dump di una variabile con formattazione piacevole\Xmf\Debug::dump($myVariable);
// Dump di variabili multiple\Xmf\Debug::dump($var1, $var2, $var3);
// Dump di dati POST\Xmf\Debug::dump($_POST);
// Mostra uno stack trace\Xmf\Debug::backtrace();L’output di debug è collassabile e mostra oggetti e array in un formato facile da leggere.
Raccomandazione della Struttura del Progetto
Sezione intitolata “Raccomandazione della Struttura del Progetto”Quando costruite moduli basati su XMF, organizzate il vostro codice:
mymodule/ admin/ index.php menu.php class/ Helper.php # Helper personalizzato opzionale ItemHandler.php # I vostri handler include/ common.php language/ english/ main.php admin.php modinfo.php templates/ mymodule_index.tpl index.php xoops_version.phpPattern di Include Comune
Sezione intitolata “Pattern di Include Comune”Un tipico punto di ingresso del modulo:
<?phpuse Xmf\Request;use Xmf\Module\Helper;
require_once dirname(dirname(__DIR__)) . '/mainfile.php';
$helper = Helper::getHelper(basename(__DIR__));
// Ottieni operazione dalla richiesta$op = Request::getCmd('op', 'list');$id = Request::getInt('id', 0);
// Includi header XOOPSrequire_once XOOPS_ROOT_PATH . '/header.php';
// La vostra logica del modulo quiswitch ($op) { case 'view': // Gestisci view break; case 'list': default: // Gestisci list break;}
// Includi footer XOOPSrequire_once XOOPS_ROOT_PATH . '/footer.php';Prossimi Passi
Sezione intitolata “Prossimi Passi”Ora che comprendete le basi, esplorate:
- XMF-Request - Documentazione dettagliata sulla gestione delle richieste
- XMF-Module-Helper - Riferimento completo del module helper
- ../Recipes/Permission-Helper - Gestione dei permessi utente
- ../Recipes/Module-Admin-Pages - Costruzione di interfacce di amministrazione
Vedere Anche
Sezione intitolata “Vedere Anche”- ../XMF-Framework - Panoramica del framework
- ../Reference/JWT - Supporto JSON Web Token
- ../Reference/Database - Utilità di database
#xmf #getting-started #namespaces #autoloading #basics