XMF Module Helper
A classe Xmf\Module\Helper fornece uma maneira fácil de acessar informações relacionadas a módulo, configurações, handlers e muito mais. Usar o module helper simplifica seu código e reduz boilerplate.
Visão Geral
Seção intitulada “Visão Geral”O module helper fornece:
- Acesso simplificado a configuração
- Recuperação de objeto de módulo
- Instanciação de handler
- Resolução de caminho e URL
- Helpers de permissão e sessão
- Gerenciamento de cache
Obtendo um Module Helper
Seção intitulada “Obtendo um Module Helper”Uso Básico
Seção intitulada “Uso Básico”use Xmf\Module\Helper;
// Obter helper para um módulo específico$helper = Helper::getHelper('mymodule');
// O helper é automaticamente associado ao diretório do móduloDo Módulo Atual
Seção intitulada “Do Módulo Atual”Se você não especificar um nome de módulo, ele usa o módulo ativo atual:
$helper = Helper::getHelper('');// ou$helper = Helper::getHelper(basename(__DIR__));Acesso à Configuração
Seção intitulada “Acesso à Configuração”Forma Tradicional XOOPS
Seção intitulada “Forma Tradicional XOOPS”Obter configuração de módulo da forma antiga é verboso:
$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;Forma XMF
Seção intitulada “Forma XMF”Com o module helper, a mesma tarefa fica simples:
$helper = \Xmf\Module\Helper::getHelper('mymodule');echo "The value of 'foo' is: " . $helper->getConfig('foo', 'default');Métodos do Helper
Seção intitulada “Métodos do Helper”getModule()
Seção intitulada “getModule()”Retorna o objeto XoopsModule para o módulo do helper.
$module = $helper->getModule();$version = $module->getVar('version');$name = $module->getVar('name');$mid = $module->getVar('mid');getConfig($name, $default)
Seção intitulada “getConfig($name, $default)”Retorna um valor de configuração de módulo ou todas as configurações.
// Obter configuração única com padrão$itemsPerPage = $helper->getConfig('items_per_page', 10);$enableCache = $helper->getConfig('enable_cache', true);
// Obter todas as configurações como array$allConfigs = $helper->getConfig('');getHandler($name)
Seção intitulada “getHandler($name)”Retorna um object handler para o módulo.
$itemHandler = $helper->getHandler('items');$categoryHandler = $helper->getHandler('categories');
// Usar o handler$item = $itemHandler->get($id);$items = $itemHandler->getObjects($criteria);loadLanguage($name)
Seção intitulada “loadLanguage($name)”Carrega um arquivo de idioma para o módulo.
$helper->loadLanguage('main');$helper->loadLanguage('admin');$helper->loadLanguage('modinfo');isCurrentModule()
Seção intitulada “isCurrentModule()”Verifica se este é o módulo ativo atual.
if ($helper->isCurrentModule()) { // Estamos nas páginas do próprio módulo} else { // Chamado de outro módulo ou local}isUserAdmin()
Seção intitulada “isUserAdmin()”Verifica se o usuário atual tem direitos de admin para este módulo.
if ($helper->isUserAdmin()) { // Mostrar opções de admin echo '<a href="' . $helper->url('admin/index.php') . '">Admin</a>';}Métodos de Caminho e URL
Seção intitulada “Métodos de Caminho e URL”url($url)
Seção intitulada “url($url)”Retorna uma URL absoluta para um caminho relativo ao módulo.
$logoUrl = $helper->url('images/logo.png');// Retorna: https://example.com/modules/mymodule/images/logo.png
$adminUrl = $helper->url('admin/index.php');// Retorna: https://example.com/modules/mymodule/admin/index.phppath($path)
Seção intitulada “path($path)”Retorna um caminho absoluto do sistema de arquivos para um caminho relativo ao módulo.
$templatePath = $helper->path('templates/view.tpl');$includePath = $helper->path('include/functions.php');require_once $includePath;uploadUrl($url)
Seção intitulada “uploadUrl($url)”Retorna uma URL absoluta para arquivos de upload de módulo.
$fileUrl = $helper->uploadUrl('documents/manual.pdf');uploadPath($path)
Seção intitulada “uploadPath($path)”Retorna um caminho absoluto do sistema de arquivos para arquivos de upload de módulo.
$uploadDir = $helper->uploadPath('');$filePath = $helper->uploadPath('images/photo.jpg');redirect($url, $time, $message)
Seção intitulada “redirect($url, $time, $message)”Redireciona dentro do módulo para uma URL relativa ao módulo.
$helper->redirect('index.php', 3, 'Item salvo com sucesso');$helper->redirect('view.php?id=' . $newId, 2, 'Criado!');Suporte de Depuração
Seção intitulada “Suporte de Depuração”setDebug($bool)
Seção intitulada “setDebug($bool)”Ativa ou desativa o modo debug para o helper.
$helper->setDebug(true); // Ativar$helper->setDebug(false); // Desativar$helper->setDebug(); // Ativar (padrão é true)addLog($log)
Seção intitulada “addLog($log)”Adiciona uma mensagem ao log do módulo.
$helper->addLog('Processando item ID: ' . $id);$helper->addLog('Cache miss, carregando do banco de dados');Classes Helper Relacionadas
Seção intitulada “Classes Helper Relacionadas”XMF fornece helpers especializados que estendem Xmf\Module\Helper\AbstractHelper:
Permission Helper
Seção intitulada “Permission Helper”Veja ../Recipes/Permission-Helper para documentação detalhada.
$permHelper = new \Xmf\Module\Helper\Permission('mymodule');
// Verificar permissãoif ($permHelper->checkPermission('view', $itemId)) { // Usuário tem permissão}
// Verificar e redirecionar se sem permissão$permHelper->checkPermissionRedirect('edit', $itemId, 'index.php', 3, 'Acesso negado');Session Helper
Seção intitulada “Session Helper”Armazenamento de sessão consciente de módulo com prefixação automática de chave.
$session = new \Xmf\Module\Helper\Session('mymodule');
// Armazenar valor$session->set('last_viewed', $itemId);
// Recuperar valor$lastViewed = $session->get('last_viewed', 0);
// Deletar valor$session->del('last_viewed');
// Limpar todos os dados de sessão do módulo$session->destroy();Cache Helper
Seção intitulada “Cache Helper”Cache consciente de módulo com prefixação automática de chave.
$cache = new \Xmf\Module\Helper\Cache('mymodule');
// Escrever para cache (TTL em segundos)$cache->write('item_' . $id, $itemData, 3600);
// Ler do cache$data = $cache->read('item_' . $id, null);
// Deletar do cache$cache->delete('item_' . $id);
// Ler com regeneração automática$data = $cache->cacheRead( 'expensive_data', function() { // Isto executa apenas se cache miss return computeExpensiveData(); }, 3600);Exemplo Completo
Seção intitulada “Exemplo Completo”Aqui está um exemplo abrangente usando o module helper:
<?phpuse Xmf\Request;use Xmf\Module\Helper;use Xmf\Module\Helper\Permission;use Xmf\Module\Helper\Session;
require_once dirname(dirname(__DIR__)) . '/mainfile.php';
// Inicializar helpers$helper = Helper::getHelper('mymodule');$permHelper = new Permission('mymodule');$session = new Session('mymodule');
// Carregar idioma$helper->loadLanguage('main');
// Obter configuração$itemsPerPage = $helper->getConfig('items_per_page', 10);$enableComments = $helper->getConfig('enable_comments', true);
// Manipular requisição$op = Request::getCmd('op', 'list');$id = Request::getInt('id', 0);
require_once XOOPS_ROOT_PATH . '/header.php';
switch ($op) { case 'view': // Verificar permissão if (!$permHelper->checkPermission('view', $id)) { redirect_header($helper->url('index.php'), 3, _NOPERM); }
// Rastrear em sessão $session->set('last_viewed', $id);
// Obter handler e item $itemHandler = $helper->getHandler('items'); $item = $itemHandler->get($id);
if (!$item) { redirect_header($helper->url('index.php'), 3, 'Item não encontrado'); }
// Exibir 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);
// Mostrar último visualizado se existe $lastViewed = $session->get('last_viewed', 0); if ($lastViewed > 0) { $xoopsTpl->assign('last_viewed', $lastViewed); } break;}
// Link de admin se autorizadoif ($helper->isUserAdmin()) { $xoopsTpl->assign('admin_url', $helper->url('admin/index.php'));}
require_once XOOPS_ROOT_PATH . '/footer.php';Classe Base AbstractHelper
Seção intitulada “Classe Base AbstractHelper”Todas as classes helper XMF estendem Xmf\Module\Helper\AbstractHelper, que fornece:
Constructor
Seção intitulada “Constructor”public function __construct($dirname)Instancia com um nome de diretório de módulo. Se vazio, usa o módulo atual.
dirname()
Seção intitulada “dirname()”Retorna o nome do diretório de módulo associado ao helper.
$dirname = $helper->dirname();Chamado pelo construtor após o módulo ser carregado. Anule em helpers customizados para lógica de inicialização.
Criando Helpers Customizados
Seção intitulada “Criando Helpers Customizados”Você pode estender o helper para funcionalidade específica do módulo:
<?phpnamespace XoopsModules\Mymodule;
class Helper extends \Xmf\Module\Helper\GenericHelper{ public function init() { // Inicialização customizada }
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; }}Veja Também
Seção intitulada “Veja Também”- Getting-Started-with-XMF - Uso básico de XMF
- XMF-Request - Manipulação de requisições
- ../Recipes/Permission-Helper - Gerenciamento de permissões
- ../Recipes/Module-Admin-Pages - Criação de interface admin
#xmf #module-helper #configuration #handlers #session #cache