Skip to content

ADR-001 - Seni Bina Modular

ADR-001: Seni Bina Modular> Rekod Keputusan Seni Bina untuk falsafah reka bentuk modular teras XOOPS.---

Section titled “ADR-001: Seni Bina Modular> Rekod Keputusan Seni Bina untuk falsafah reka bentuk modular teras XOOPS.---”

StatusDiterima - Keputusan asas sejak XOOPS ditubuhkan---

Section titled “StatusDiterima - Keputusan asas sejak XOOPS ditubuhkan---”

KonteksXOOPS (Sistem Portal Berorientasikan Objek eXtensible) memerlukan seni bina yang akan:1. Benarkan pembangun pihak ketiga melanjutkan fungsi

Section titled “KonteksXOOPS (Sistem Portal Berorientasikan Objek eXtensible) memerlukan seni bina yang akan:1. Benarkan pembangun pihak ketiga melanjutkan fungsi”
  1. Membolehkan pentadbir tapak untuk menyesuaikan tanpa pengekodan
  2. Menyokong pembangunan bebas dan kemas kini
  3. Menyediakan pengasingan antara ciri yang berbeza
  4. Skala daripada blog mudah kepada portal yang kompleksLandskap CMS awal 2000-an menawarkan sistem monolitik yang sukar untuk disesuaikan dan dilanjutkan.---
mermaid
graph TB
subgraph "XOOPS Core"
A[Kernel]
B[Database Layer]
C[User System]
D[Template Engine]
E[Security]
end
subgraph "Module System"
F[Module Loader]
G[Module Registry]
H[Module Permissions]
end
subgraph "Installed Modules"
I[News Module]
J[Forum Module]
K[Gallery Module]
L[Custom Module]
end
A --> F
B --> F
C --> H
D --> F
E --> H
F --> G
G --> I
G --> J
G --> K
G --> L
H --> I
H --> J
H --> K
H --> L

KeputusanKami akan melaksanakan seni bina modular di mana:### 1. Teras Menyediakan Infrastruktur

Section titled “KeputusanKami akan melaksanakan seni bina modular di mana:### 1. Teras Menyediakan Infrastruktur”
  • Abstraksi pangkalan data
  • Pengesahan dan kebenaran pengguna
  • Penyampaian templat (Smarty)
  • Utiliti keselamatan
  • Penjanaan bentuk
  • Utiliti biasa### 2. Modul Berdikari Setiap modul:
  • Mempunyai struktur direktori sendiri
  • Mengandungi kelas, templat, SQL sendiri
  • Mentakrifkan konfigurasinya sendiri
  • Boleh installed/uninstalled secara bebas
  • Mempunyai penjejakan versi### 3. Struktur Modul Standard
modules/modulename/
├── admin/ # Admin interface
│ ├── index.php
│ └── menu.php
├── class/ # PHP classes
├── include/ # Include files
├── language/ # Translations
├── sql/ # Database schema
├── templates/ # Smarty templates
├── blocks/ # Block definitions
├── xoops_version.php # Module manifest
├── index.php # Entry point
└── header.php # Module bootstrap
php
<?php
$modversion['name'] = 'Module Name';
$modversion['version'] = '1.0.0';
$modversion['description'] = 'Module description';
$modversion['dirname'] = basename(__DIR__);
$modversion['hasMain'] = 1;
$modversion['hasAdmin'] = 1;
$modversion['sqlfile']['mysql'] = 'sql/mysql.sql';
$modversion['tables'] = ['modulename_table1'];
$modversion['templates'] = [...];
$modversion['config'] = [...];
$modversion['blocks'] = [...];
  • Melalui API teras (pengendali, acara)
  • Hubungan pangkalan data
  • Cangkuk pramuat
  • Perkhidmatan berkongsi---
mermaid
stateDiagram-v2
[*] --> Available: Upload to modules/
Available --> Installing: Admin clicks Install
Installing --> Installed: SQL executed, records created
Installed --> Active: Admin activates
Active --> Updating: New version uploaded
Updating --> Active: Update scripts run
Active --> Inactive: Admin deactivates
Inactive --> Active: Admin reactivates
Inactive --> Uninstalling: Admin uninstalls
Uninstalling --> Available: Keep files
Uninstalling --> [*]: Remove files

Akibat### Positif1. Kebolehlanjutan: Beribu-ribu modul yang dicipta oleh komuniti

Section titled “Akibat### Positif1. Kebolehlanjutan: Beribu-ribu modul yang dicipta oleh komuniti”
  1. Kemerdekaan: Modul boleh dibangunkan secara berasingan
  2. Fleksibiliti: Tapak boleh mencampur dan memadankan ciri
  3. Kebolehselenggaraan: Kemas kini tidak menjejaskan modul lain
  4. Pasaran: Ekosistem modul muncul
  5. Keluk pembelajaran: Pembangun mempelajari satu corak### Negatif1. Overhed: Setiap modul mempunyai kos bootstrap
  6. Penduaan: Kod biasa mungkin diulang
  7. Integrasi: Ciri merentas modul memerlukan reka bentuk yang teliti
  8. Versi: Pengurusan keserasian modul diperlukan
  9. Varian kualiti: Kualiti modul pihak ketiga berbeza-beza### Neutral1. Pangkalan Data: Setiap modul menguruskan jadualnya sendiri
  10. Templat: Tema mesti memuatkan pelbagai modul
  11. Kemas kini: Teras dan modul dikemas kini secara bebas---

Alternatif Dipertimbangkan### 1. Seni Bina Monolitik

Section titled “Alternatif Dipertimbangkan### 1. Seni Bina Monolitik”

Ditolak - Terlalu tegar, sukar untuk disesuaikan### 2. Seni Bina Pemalam (gaya WordPress) Sebahagiannya diterima pakai - Blok dan pramuat menyediakan cangkuk seperti pemalam dalam modul### 3. Seni Bina Komponen (gaya Joomla) Ditolak - Lebih kompleks, kurang mesra pembangun### 4. Perkhidmatan mikro Tidak berkenaan - Terlalu kompleks untuk era pengehosan kongsi---

Keputusan Berkaitan- ADR-002: Akses Pangkalan Data Berorientasikan Objek

Section titled “Keputusan Berkaitan- ADR-002: Akses Pangkalan Data Berorientasikan Objek”
  • ADR-003: Enjin Templat Smarty
  • ADR-005: Sistem Kebenaran---
  • Corak Seni Bina Aplikasi PHP
  • Kajian Perbandingan CMS (2001-2005)---

#XOOPS #architecture #adr #modules #design-decision