Початок роботи з XMF
2.5.x ✅ 4.0.x ✅
Цей посібник охоплює основні поняття XOOPS Module Framework (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');Використання помічника модулів
Section titled “Використання помічника модулів”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-Запит - Детальна документація обробки запиту
- XMF-Module-Helper - Повна довідка про допоміжний модуль
- ../Recipes/Permission-Helper - Керування дозволами користувача
- ../Recipes/Module-Admin-Pages - Створення інтерфейсів адміністратора
Дивіться також
Section titled “Дивіться також”- ../XMF-Framework - Огляд фреймворку
- ../Reference/JWT - JSON Підтримка веб-токенів
- ../Reference/Database - Утиліти бази даних
#XMF #початок роботи #простори імен #автозавантаження #основи