コンテンツにスキップ

XMFを使い始める

2.5.x ✅ 4.0.x ✅

このガイドでは、XOOPS Module Framework (XMF) の基本的な概念と、モジュールで使用を開始する方法について説明します。

  • XOOPS 2.5.8 以降がインストールされている
  • PHP 7.2 以降
  • PHP オブジェクト指向プログラミングの基本的な理解

XMFはPHP名前空間を使用してクラスを整理し、命名競合を回避します。すべてのXMFクラスは Xmf 名前空間に存在します。

名前空間がない場合、すべてのPHPクラスはグローバルスペースを共有します。これは競合を引き起こす可能性があります:

<?php
// This would conflict with PHP's built-in ArrayObject
class ArrayObject {
public function doStuff() {
// ...
}
}
// 致命的エラー: クラスArrayObjectを再宣言できません

名前空間は独立した命名コンテキストを作成します:

<?php
namespace MyNamespace;
class ArrayObject {
public function doStuff() {
// ...
}
}
// 競合なし - これは \MyNamespace\ArrayObject です

XMFクラスは複数の方法で参照できます:

完全な名前空間パス:

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

useステートメント付き:

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

XMFの最大の便利さの1つは自動クラスロードです。XMFクラスファイルを手動でインクルードする必要はありません。

古い方法は明示的な読み込みが必要でした:

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

XMFを使用すると、クラスは参照されたときに自動的にロードされます:

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

Or with a use statement:

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

オートローダーは PSR-4 標準に従い、XMFが依存する依存関係も管理します。

use Xmf\Request;
// デフォルト値0で整数値を取得
$id = Request::getInt('id', 0);
// デフォルト値が空の文字列で文字列値を取得
$title = Request::getString('title', '');
// コマンド (英数字, 小文字) を取得
$op = Request::getCmd('op', 'list');
// 検証付きメールアドレスを取得
$email = Request::getEmail('email', '');
// 特定のハッシュから取得 (POST、GET など)
$formData = Request::getString('data', '', 'POST');

モジュールヘルパーを使用する

Section titled “モジュールヘルパーを使用する”
use Xmf\Module\Helper;
// モジュールのヘルパーを取得
$helper = Helper::getHelper('mymodule');
// モジュール設定を読み込む
$itemsPerPage = $helper->getConfig('items_per_page', 10);
$enableFeature = $helper->getConfig('enable_feature', false);
// モジュールオブジェクトにアクセス
$module = $helper->getModule();
$version = $module->getVar('version');
// ハンドラーを取得
$itemHandler = $helper->getHandler('items');
// 言語ファイルを読み込む
$helper->loadLanguage('admin');
// 現在のモジュールかどうかをチェック
if ($helper->isCurrentModule()) {
// このモジュール内にいます
}
// 管理者権限をチェック
if ($helper->isUserAdmin()) {
// ユーザーは管理者アクセスを持っています
}
use Xmf\Module\Helper;
$helper = Helper::getHelper('mymodule');
// モジュールURLを取得
$moduleUrl = $helper->url('images/logo.png');
// 返す: https://example.com/modules/mymodule/images/logo.png
// モジュールパスを取得
$modulePath = $helper->path('templates/view.tpl');
// 返す: /var/www/html/modules/mymodule/templates/view.tpl
// アップロードパス
$uploadUrl = $helper->uploadUrl('files/document.pdf');
$uploadPath = $helper->uploadPath('files/document.pdf');

XMFは有用なデバッグツールを提供します:

// 変数をきれいにフォーマットしてダンプ
\Xmf\Debug::dump($myVariable);
// 複数の変数をダンプ
\Xmf\Debug::dump($var1, $var2, $var3);
// POSTデータをダンプ
\Xmf\Debug::dump($_POST);
// バックトレースを表示
\Xmf\Debug::backtrace();

デバッグ出力は折りたたみ可能で、オブジェクトと配列を読みやすい形式で表示します。

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

典型的なモジュールのエントリーポイント:

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);
// XOOPSヘッダーをインクルード
require_once XOOPS_ROOT_PATH . '/header.php';
// モジュールのロジックをここに
switch ($op) {
case 'view':
// ビューを処理
break;
case 'list':
default:
// リストを処理
break;
}
// XOOPS フッターをインクルード
require_once XOOPS_ROOT_PATH . '/footer.php';

基本を理解したら、以下を確認してください:

  • XMF-Request - 詳細なリクエスト処理ドキュメント
  • XMF-Module-Helper - 完全なモジュールヘルパーリファレンス
  • ../Recipes/Permission-Helper - ユーザー権限の管理
  • ../Recipes/Module-Admin-Pages - 管理インターフェースの構築
  • ../XMF-Framework - フレームワークの概要
  • ../Reference/JWT - JSON Webトークンサポート
  • ../Reference/Database - データベースユーティリティ

#xmf #getting-started #namespaces #autoloading #basics