Dependency management adalah proses mengelola library eksternal dan komponen yang dibutuhkan oleh aplikasi. NexaUI Framework menggunakan Composer sebagai dependency manager utama, yang memungkinkan pengembang untuk dengan mudah menambahkan, memperbarui, dan mengelola dependensi proyek.
Composer adalah alat dependency manager standar untuk PHP yang memungkinkan Anda mendeklarasikan library yang dibutuhkan proyek Anda dan mengelolanya secara otomatis.
File composer.json
adalah jantung dari sistem dependency management di NexaUI.
File ini mendefinisikan:
Contoh file composer.json
dasar untuk proyek NexaUI:
{
"name": "nexaui/framework",
"description": "Modern PHP Framework dengan Template Engine yang powerful",
"type": "project",
"license": "MIT",
"require": {
"php": "^7.4|^8.0",
"vlucas/phpdotenv": "^5.3",
"symfony/http-foundation": "^5.3",
"monolog/monolog": "^2.3"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"mockery/mockery": "^1.4"
},
"autoload": {
"psr-4": {
"App\\": "./"
},
"files": [
"system/Helpers/functions.php"
]
},
"scripts": {
"test": "phpunit"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"minimum-stability": "dev",
"prefer-stable": true
}
Untuk menginstal semua dependensi yang didefinisikan dalam composer.json
:
composer install
Untuk menambahkan library baru ke proyek Anda:
composer require vendor/package
Contoh menambahkan library untuk manipulasi gambar:
composer require intervention/image
Untuk memperbarui semua dependensi ke versi terbaru (sesuai batasan dalam composer.json
):
composer update
Untuk memperbarui package tertentu:
composer update vendor/package
NexaUI menggunakan sistem autoloading PSR-4 yang dikelola oleh Composer. Ini memungkinkan
kelas-kelas dimuat secara otomatis tanpa perlu menggunakan require
atau include
secara manual.
Konfigurasi autoloading didefinisikan dalam bagian autoload
di composer.json
:
"autoload": {
"psr-4": {
"App\\": "./"
},
"files": [
"system/Helpers/functions.php"
]
}
Dengan konfigurasi di atas, namespace App\
akan dipetakan ke direktori root proyek.
Misalnya, kelas App\Controllers\HomeController
akan dicari di file controllers/HomeController.php
.
Selain itu, file system/Helpers/functions.php
akan selalu dimuat, yang berisi fungsi-fungsi
helper global yang digunakan di seluruh aplikasi.
Untuk lingkungan produksi, sangat disarankan untuk mengoptimalkan autoloader Composer:
composer dump-autoload -o
Perintah ini akan menghasilkan classmap yang dioptimalkan, yang meningkatkan performa loading kelas secara signifikan.
NexaUI menggunakan Composer scripts untuk mengotomatisasi tugas-tugas umum:
"scripts": {
"post-create-project-cmd": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
"@php nexa key:generate"
],
"post-autoload-dump": [
"App\\System\\ComposerScripts::postAutoloadDump"
],
"test": "phpunit"
}
Script-script ini akan dijalankan pada momen tertentu, seperti setelah proyek dibuat atau setelah autoloader di-dump.
composer.lock
ke version control untuk memastikan semua pengembang menggunakan versi yang samacomposer update
dengan hati-hati, terutama di lingkungan produksicomposer dump-autoload -o