تخطَّ إلى المحتوى

إطار عمل XMF

2.5.x ✅ 4.0.x ✅

إطار عمل وحدات XOOPS (XMF) هو مكتبة قوية مصممة لتبسيط وتوحيد تطوير وحدات XOOPS. يوفر XMF ممارسات PHP الحديثة بما في ذلك المساحات والتحميل التلقائي ومجموعة شاملة من فئات المساعد التي تقلل من الأنماط الحالية وتحسن الصيانة.

XMF هي مجموعة من الفئات والأدوات التي توفر:

  • دعم PHP الحديث - دعم مساحة أسماء كامل مع تحميل PSR-4 التلقائي
  • معالجة الطلب - التحقق من صحة المدخلات الآمنة والمعالجة
  • مساعدات الوحدة - وصول مبسط إلى تكوينات وكائنات الوحدة
  • نظام الإذن - إدارة الأذونات سهلة الاستخدام
  • أدوات قاعدة البيانات - أدوات هجرة الحمل وإدارة الجداول
  • دعم JWT - تنفيذ رمز الويب JSON للمصادقة الآمنة
  • توليد البيانات الوصفية - أدوات المحتوى المستخرجة من SEO
  • واجهة الإدارة - صفحات إدارة الوحدة الموحدة
graph TB
subgraph XMF["إطار عمل XMF"]
direction TB
subgraph Core["المكونات الأساسية"]
Request["🔒 Request<br/>معالجة الإدخال"]
Module["📦 مساعد الوحدة<br/>التكوين والمعالجات"]
Perm["🔑 الإذن<br/>التحكم في الوصول"]
end
subgraph Utils["الأدوات"]
DB["🗄️ قاعدة البيانات<br/>أدوات الحمل"]
JWT["🎫 JWT<br/>مصادقة الرمز"]
Meta["📊 Metagen<br/>أدوات SEO"]
end
subgraph Admin["أدوات الإدارة"]
AdminUI["🎨 واجهة الإدارة<br/>الصفحات الموحدة"]
Icons["🖼️ الرموز<br/>Font Awesome"]
end
end
subgraph Module["وحدتك"]
Controller["المراقب"]
Handler["المعالج"]
Template["القالب"]
end
Controller --> Request
Controller --> Module
Controller --> Perm
Handler --> DB
Template --> AdminUI
style XMF fill:#e3f2fd,stroke:#1976d2
style Core fill:#e8f5e9,stroke:#388e3c
style Utils fill:#fff3e0,stroke:#f57c00
style Admin fill:#fce4ec,stroke:#c2185b

مساحات الأسماء والتحميل التلقائي

Section titled “مساحات الأسماء والتحميل التلقائي”

تقيم جميع فئات XMF في مساحة اسم Xmf. يتم تحميل الفئات تلقائيا عند الإشارة إليها - لا توجد ملفات include يدوية مطلوبة.

use Xmf\Request;
use Xmf\Module\Helper;
// تحميل الفئات تلقائيا عند الاستخدام
$input = Request::getString('input', '');
$helper = Helper::getHelper('mymodule');

توفر فئة Request وصول آمن من حيث النوع لبيانات طلب HTTP مع المعالجة المدمجة:

flowchart LR
subgraph Input["الإدخال الخام"]
GET["$_GET"]
POST["$_POST"]
REQUEST["$_REQUEST"]
end
subgraph XMF["Xmf\\Request"]
Validate["التحقق من النوع"]
Sanitize["المعالجة"]
Default["القيم الافتراضية"]
end
subgraph Output["الإخراج الآمن"]
Int["getInt()"]
Str["getString()"]
Email["getEmail()"]
Bool["getBool()"]
end
GET --> XMF
POST --> XMF
REQUEST --> XMF
XMF --> Int
XMF --> Str
XMF --> Email
XMF --> Bool
style Input fill:#ffcdd2,stroke:#c62828
style XMF fill:#fff3e0,stroke:#f57c00
style Output fill:#c8e6c9,stroke:#2e7d32
use Xmf\Request;
$id = Request::getInt('id', 0);
$name = Request::getString('name', '');
$email = Request::getEmail('email', '');

يوفر مساعد الوحدة وصول مناسب إلى الوظائف المتعلقة بالوحدة:

$helper = \Xmf\Module\Helper::getHelper('mymodule');
// وصول تكوين الوحدة
$configValue = $helper->getConfig('setting_name', 'default');
// الحصول على كائن الوحدة
$module = $helper->getModule();
// وصول المعالجات
$handler = $helper->getHandler('items');

يبسط Permission-Helper معالجة الأذونات في XOOPS:

$permHelper = new \Xmf\Module\Helper\Permission();
// التحقق من أذن المستخدم
if ($permHelper->checkPermission('view', $itemId)) {
// المستخدم لديه إذن
}
  • JWT - تنفيذ رمز الويب JSON
  • Database - أدوات قاعدة البيانات وإدارة الحمل
  • Metagen - أدوات البيانات الوصفية و SEO
  • XOOPS 2.5.8 أو إصدار أحدث
  • PHP 7.2 أو إصدار أحدث (يُنصح PHP 8.x)

يتم تضمين XMF مع XOOPS 2.5.8 والإصدارات الأحدث. للإصدارات السابقة أو التثبيت اليدوي:

  1. قم بتنزيل حزمة XMF من مستودع XOOPS
  2. قم بالاستخراج إلى مجلد /class/xmf/ في XOOPS الخاص بك
  3. سيتولى المحمل التلقائي معالجة تحميل الفئة تلقائيا

إليك مثال كامل يوضح أنماط استخدام XMF الشائعة:

<?php
use Xmf\Request;
use Xmf\Module\Helper;
use Xmf\Module\Helper\Permission;
// احصل على مساعد الوحدة
$helper = Helper::getHelper('mymodule');
// احصل على قيم التكوين
$itemsPerPage = $helper->getConfig('items_per_page', 10);
// معالجة إدخال الطلب
$op = Request::getCmd('op', 'list');
$id = Request::getInt('id', 0);
// تحقق من الأذونات
$permHelper = new Permission();
if (!$permHelper->checkPermission('view', $id)) {
redirect_header('index.php', 3, 'Access denied');
}
// معالجة على أساس العملية
switch ($op) {
case 'view':
$handler = $helper->getHandler('items');
$item = $handler->get($id);
// ... عرض العنصر
break;
case 'list':
default:
// ... قائمة العناصر
break;
}

#xmf #xoops #framework #php #module-development