Lewati ke konten

Memulai dengan XMF

2.5.x ✅ 4.0.x ✅

Panduan ini mencakup konsep dasar Kerangka module XOOPS (XMF) dan cara mulai menggunakannya dalam module Anda.

  • XOOPS 2.5.8 atau lebih baru diinstal
  • PHP 7.2 atau lebih baru
  • Pemahaman dasar pemrograman berorientasi objek PHP

XMF menggunakan namespace PHP untuk mengatur kelasnya dan menghindari konflik penamaan. Semua kelas XMF berada di namespace Xmf.

Tanpa namespace, semua kelas PHP berbagi ruang global. Hal ini dapat menyebabkan konflik:

<?php
// This would conflict with PHP's built-in ArrayObject
class ArrayObject {
public function doStuff() {
// ...
}
}
// Fatal error: Cannot redeclare class ArrayObject

namespace menciptakan konteks penamaan yang terisolasi:

<?php
namespace MyNamespace;
class ArrayObject {
public function doStuff() {
// ...
}
}
// No conflict - this is \MyNamespace\ArrayObject

Anda dapat mereferensikan kelas XMF dengan beberapa cara:

Jalur namespace lengkap:

$helper = \Xmf\Module\Helper::getHelper('mymodule');

Dengan pernyataan penggunaan:

use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');

Beberapa impor:

use Xmf\Request;
use Xmf\Module\Helper;
use Xmf\Module\Helper\Permission;
$input = Request::getString('input', '');
$helper = Helper::getHelper('mymodule');
$perm = new Permission();

Salah satu kemudahan terbesar XMF adalah pemuatan kelas otomatis. Anda tidak perlu memasukkan file kelas XMF secara manual.

Cara lama memerlukan pemuatan eksplisit:

XoopsLoad('xoopsrequest');
$cleanInput = XoopsRequest::getString('input', '');

Dengan XMF, kelas dimuat secara otomatis ketika direferensikan:

$input = Xmf\Request::getString('input', '');

Atau dengan pernyataan penggunaan:

use Xmf\Request;
$input = Request::getString('input', '');
$id = Request::getInt('id', 0);
$op = Request::getCmd('op', 'display');

Pemuat otomatis mengikuti standar PSR-4 dan juga mengelola dependensi yang diandalkan oleh 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 module
if ($helper->isCurrentModule()) {
// We are in this module
}
// Check admin rights
if ($helper->isUserAdmin()) {
// User has admin access
}
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 menyediakan alat debugging yang berguna:

// 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();

Output debug dapat dilipat dan menampilkan objek dan array dalam format yang mudah dibaca.

Saat membuat module berbasis XMF, atur kode Anda:

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

Titik masuk module yang khas:

mymodule/index.php
<?php
use 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 header
require_once XOOPS_ROOT_PATH . '/header.php';
// Your module logic here
switch ($op) {
case 'view':
// Handle view
break;
case 'list':
default:
// Handle list
break;
}
// Include XOOPS footer
require_once XOOPS_ROOT_PATH . '/footer.php';

Sekarang setelah Anda memahami dasar-dasarnya, jelajahi:

  • XMF-Request - Dokumentasi penanganan permintaan terperinci
  • XMF-Module-Helper - Referensi pembantu module lengkap
  • ../Recipes/Permission-Helper - Mengelola izin pengguna
  • ../Recipes/Module-Admin-Pages - Membangun antarmuka admin
  • ../XMF-Framework - Ikhtisar kerangka kerja
  • ../Reference/JWT - Dukungan Token Web JSON
  • ../Reference/Database - Utilitas basis data

#xmf #memulai #namespaces #autoloading #basics