İçeriğe geç

XMF module Yardımcısı

Xmf\Module\Helper sınıfı, modülle ilgili bilgilere, yapılandırmalara, işleyicilere ve daha fazlasına erişmenin kolay bir yolunu sağlar. module yardımcısını kullanmak kodunuzu basitleştirir ve ortak metinleri azaltır.

module yardımcısı şunları sağlar:

  • Basitleştirilmiş konfigürasyon erişimi
  • module nesnesi alımı
  • İşleyici örneklemesi
  • Yol ve URL çözünürlüğü
  • İzin ve oturum yardımcıları
  • cache yönetimi
use Xmf\Module\Helper;
// Get helper for a specific module
$helper = Helper::getHelper('mymodule');
// The helper is automatically associated with the module directory

Bir module adı belirtmezseniz geçerli etkin modülü kullanır:

$helper = Helper::getHelper('');
// or
$helper = Helper::getHelper(basename(__DIR__));

module konfigürasyonunu eski yöntemle almak ayrıntılıdır:

$module_handler = xoops_gethandler('module');
$module = $module_handler->getByDirname('mymodule');
$config_handler = xoops_gethandler('config');
$moduleConfig = $config_handler->getConfigsByCat(0, $module->getVar('mid'));
$value = isset($moduleConfig['foo']) ? $moduleConfig['foo'] : 'default';
echo "The value of 'foo' is: " . $value;

module yardımcısı ile aynı görev basitleşir:

$helper = \Xmf\Module\Helper::getHelper('mymodule');
echo "The value of 'foo' is: " . $helper->getConfig('foo', 'default');

Yardımcı module için XoopsModule nesnesini döndürür.

$module = $helper->getModule();
$version = $module->getVar('version');
$name = $module->getVar('name');
$mid = $module->getVar('mid');

Bir module yapılandırma değerini veya tüm yapılandırmaları döndürür.

// Get single config with default
$itemsPerPage = $helper->getConfig('items_per_page', 10);
$enableCache = $helper->getConfig('enable_cache', true);
// Get all configs as array
$allConfigs = $helper->getConfig('');

module için bir nesne işleyicisi döndürür.

$itemHandler = $helper->getHandler('items');
$categoryHandler = $helper->getHandler('categories');
// Use the handler
$item = $itemHandler->get($id);
$items = $itemHandler->getObjects($criteria);

module için bir dil dosyası yükler.

$helper->loadLanguage('main');
$helper->loadLanguage('admin');
$helper->loadLanguage('modinfo');

Bu modülün şu anda aktif olan module olup olmadığını kontrol eder.

if ($helper->isCurrentModule()) {
// We're in the module's own pages
} else {
// Called from another module or location
}

Geçerli kullanıcının bu module için yönetici haklarına sahip olup olmadığını kontrol eder.

if ($helper->isUserAdmin()) {
// Show admin options
echo '<a href="' . $helper->url('admin/index.php') . '">Admin</a>';
}

Modüle bağlı bir yol için mutlak bir URL döndürür.

$logoUrl = $helper->url('images/logo.png');
// Returns: https://example.com/modules/mymodule/images/logo.png
$adminUrl = $helper->url('admin/index.php');
// Returns: https://example.com/modules/mymodule/admin/index.php

Modüle bağlı bir yol için mutlak bir dosya sistemi yolu döndürür.

/var/www/html/modules/mymodule/templates/view.tpl
$templatePath = $helper->path('templates/view.tpl');
$includePath = $helper->path('include/functions.php');
require_once $includePath;

module yükleme dosyaları için mutlak bir URL döndürür.

$fileUrl = $helper->uploadUrl('documents/manual.pdf');

module yükleme dosyaları için mutlak bir dosya sistemi yolu döndürür.

$uploadDir = $helper->uploadPath('');
$filePath = $helper->uploadPath('images/photo.jpg');

module içinde modüle bağlı bir URL’ya yönlendirme yapar.

$helper->redirect('index.php', 3, 'Item saved successfully');
$helper->redirect('view.php?id=' . $newId, 2, 'Created!');

Yardımcı için hata ayıklama modunu etkinleştirin veya devre dışı bırakın.

$helper->setDebug(true); // Enable
$helper->setDebug(false); // Disable
$helper->setDebug(); // Enable (default is true)

module günlüğüne bir mesaj ekleyin.

$helper->addLog('Processing item ID: ' . $id);
$helper->addLog('Cache miss, loading from database');

XMF, Xmf\Module\Helper\AbstractHelper’nin kapsamını genişleten özel yardımcılar sağlar:

Ayrıntılı belgeler için ../Recipes/Permission-Helper’ye bakın.

$permHelper = new \Xmf\Module\Helper\Permission('mymodule');
// Check permission
if ($permHelper->checkPermission('view', $itemId)) {
// User has permission
}
// Check and redirect if no permission
$permHelper->checkPermissionRedirect('edit', $itemId, 'index.php', 3, 'Access denied');

Otomatik anahtar ön eki ile module uyumlu oturum depolama.

$session = new \Xmf\Module\Helper\Session('mymodule');
// Store value
$session->set('last_viewed', $itemId);
// Retrieve value
$lastViewed = $session->get('last_viewed', 0);
// Delete value
$session->del('last_viewed');
// Clear all module session data
$session->destroy();

Otomatik anahtar ön eki ile module bilinçli önbelleğe alma.

$cache = new \Xmf\Module\Helper\Cache('mymodule');
// Write to cache (TTL in seconds)
$cache->write('item_' . $id, $itemData, 3600);
// Read from cache
$data = $cache->read('item_' . $id, null);
// Delete from cache
$cache->delete('item_' . $id);
// Read with automatic regeneration
$data = $cache->cacheRead(
'expensive_data',
function() {
// This runs only if cache miss
return computeExpensiveData();
},
3600
);

module yardımcısını kullanan kapsamlı bir örneği burada bulabilirsiniz:

<?php
use Xmf\Request;
use Xmf\Module\Helper;
use Xmf\Module\Helper\Permission;
use Xmf\Module\Helper\Session;
require_once dirname(dirname(__DIR__)) . '/mainfile.php';
// Initialize helpers
$helper = Helper::getHelper('mymodule');
$permHelper = new Permission('mymodule');
$session = new Session('mymodule');
// Load language
$helper->loadLanguage('main');
// Get configuration
$itemsPerPage = $helper->getConfig('items_per_page', 10);
$enableComments = $helper->getConfig('enable_comments', true);
// Handle request
$op = Request::getCmd('op', 'list');
$id = Request::getInt('id', 0);
require_once XOOPS_ROOT_PATH . '/header.php';
switch ($op) {
case 'view':
// Check permission
if (!$permHelper->checkPermission('view', $id)) {
redirect_header($helper->url('index.php'), 3, _NOPERM);
}
// Track in session
$session->set('last_viewed', $id);
// Get handler and item
$itemHandler = $helper->getHandler('items');
$item = $itemHandler->get($id);
if (!$item) {
redirect_header($helper->url('index.php'), 3, 'Item not found');
}
// Display item
$xoopsTpl->assign('item', $item->toArray());
break;
case 'list':
default:
$itemHandler = $helper->getHandler('items');
$criteria = new CriteriaCompo();
$criteria->setLimit($itemsPerPage);
$criteria->setSort('created');
$criteria->setOrder('DESC');
$items = $itemHandler->getObjects($criteria);
$xoopsTpl->assign('items', $items);
// Show last viewed if exists
$lastViewed = $session->get('last_viewed', 0);
if ($lastViewed > 0) {
$xoopsTpl->assign('last_viewed', $lastViewed);
}
break;
}
// Admin link if authorized
if ($helper->isUserAdmin()) {
$xoopsTpl->assign('admin_url', $helper->url('admin/index.php'));
}
require_once XOOPS_ROOT_PATH . '/footer.php';

Tüm XMF yardımcı sınıfları, aşağıdakileri sağlayan Xmf\Module\Helper\AbstractHelper’yi genişletir:

public function __construct($dirname)

Bir module dizini adıyla örneklenir. Boşsa geçerli modülü kullanır.

Yardımcıyla ilişkili module dizini adını döndürür.

$dirname = $helper->dirname();

module yüklendikten sonra yapıcı tarafından çağrılır. Başlatma mantığı için özel yardımcıları geçersiz kılın.

Yardımcıyı modüle özgü işlevler için genişletebilirsiniz:

mymodule/class/Helper.php
<?php
namespace XoopsModules\Mymodule;
class Helper extends \Xmf\Module\Helper\GenericHelper
{
public function init()
{
// Custom initialization
}
public function getItemUrl($id)
{
return $this->url('item.php?id=' . $id);
}
public function getUploadDirectory()
{
$path = $this->uploadPath('');
if (!is_dir($path)) {
mkdir($path, 0755, true);
}
return $path;
}
}
  • XMF ile Başlarken - Temel XMF kullanımı
  • XMF-İstek - İstek işleme
  • ../Recipes/Permission-Helper - İzin yönetimi
  • ../Recipes/Module-Admin-Pages - Yönetici arayüzü oluşturma

#xmf #module yardımcısı #yapılandırma #işleyiciler #oturum #cache