المشروع: maatify:bootstrap
الإصدار: 1.0.3
الترخيص: MIT
المطوّر: Mohamed Abdulalim (megyptm)
© 2025 Maatify.dev
مكتبة maatify/bootstrap هي الأساس المركزي لنظام Maatify بالكامل،
حيث توفّر تهيئة موحّدة للبيئة (Environment Initialization) وتشخيصات دقيقة (Diagnostics)
إضافة إلى ضبط المنطقة الزمنية (Timezone) وفحص أمان التشغيل قبل البدء في تنفيذ أي تطبيق أو مكتبة ضمن منظومة Maatify.
تهدف إلى ضمان تشغيل مستقر ومتوقّع وآمن عبر جميع البيئات:
- بيئة التطوير المحليّة
- أنظمة الاختبار والتكامل المستمر (CI/CD)
- بيئات الإنتاج والاستضافة الفعلية
composer require maatify/bootstrapتعتمد هذه المكتبة على مجموعة من المشاريع مفتوحة المصدر:
| الاعتماد | الوظيفة الأساسية | الرابط |
|---|---|---|
| vlucas/phpdotenv | تحميل ملفات البيئة .env بشكل آمن ومنظّم |
github.com/vlucas/phpdotenv |
| psr/log | واجهة تسجيل قياسية (PSR-3 Logger Interface) | www.php-fig.org/psr/psr-3 |
| phpunit/phpunit | إطار عمل لاختبارات الوحدة (Unit Testing Framework) | phpunit.de |
تبني
maatify/bootstrapهذه المكتبات لتوفير طبقة تهيئة آمنة وموثوقة وموحّدة تُستخدم في جميع مكتبات وتطبيقات Maatify.
تعتمد مكتبة maatify/bootstrap على تسلسل هرمي من المكونات الأساسية داخل منظومة Maatify،
مما يضمن تحميل جميع الطبقات الضرورية تلقائيًا بدون تكرار أو تعارض في الإصدارات.
| المستوى | المكتبة | الوظيفة | يتم تحميلها تلقائيًا |
|---|---|---|---|
| 🧱 1 | maatify/psr-logger | توفر نظام تسجيل متوافق مع معيار PSR-3 لتوحيد سجلات النظام. | ✅ نعم |
| 🧩 2 | maatify/common | تحتوي على أدوات المساعدة الأساسية مثل المسارات، وإدارة البيئة، وتنظيف النصوص. | ✅ يتم تضمينها عبر psr-logger |
| ⚙️ 3 | maatify/bootstrap | تقوم بتهيئة البيئة والتحقق من الإعدادات وتشغيل النظام بشكل آمن. | — |
| 🧠 4 | مكتبات Maatify الأخرى | مثل maatify/rate-limiter و maatify/redis-cache و maatify/security-guard. |
تعتمد فقط على bootstrap |
🧩 ملاحظة: تثبيت مكتبة
maatify/bootstrapيؤدي تلقائيًا إلى تثبيت مكتباتmaatify/commonوmaatify/psr-logger. لا حاجة لتضمينها يدويًا في أي مشروع، إذ يتم تحميلها عبر إدارة الاعتمادات في Composer.
graph TD
A[maatify/psr-logger]:::core --> B[maatify/common]:::core
B --> C[maatify/bootstrap]:::main
C --> D["Other Maatify Libraries (rate-limiter, redis-cache, security-guard...)"]:::ext
classDef core fill:#0066cc,color:#ffffff,stroke:#003366,stroke-width:2px;
classDef main fill:#009933,color:#ffffff,stroke:#004d1a,stroke-width:2px;
classDef ext fill:#ffcc00,color:#000000,stroke:#996600,stroke-width:2px;
يوضح هذا المخطط كيف تعتمد جميع مكتبات Maatify على نفس النواة الأساسية لضمان التهيئة الموحدة وتسجيل الأخطاء بطريقة متناسقة في جميع المشاريع.
| المكتبة | PHP 8.2 | PHP 8.3 | PHP 8.4 | دعم CI |
|---|---|---|---|---|
| maatify/psr-logger | ✅ كامل | ✅ كامل | ✅ | |
| maatify/common | ✅ كامل | ✅ كامل | ✅ | |
| maatify/bootstrap | ✅ كامل | ✅ كامل | ✅ | |
| maatify/rate-limiter | ❌ غير مدعوم | ✅ كامل | ✅ كامل | ✅ |
| maatify/redis-cache | ❌ غير مدعوم | ✅ كامل | ✅ كامل | ✅ |
⚙️ ملاحظات:
- الاختبارات الرسمية وعمليات الـ CI موجهة إلى PHP 8.3 و PHP 8.4 فقط.
- التوافق مع PHP 8.2 محدود وغير مضمون.
- جميع مكتبات Maatify الأساسية تتبع إصدارًا متزامنًا لضمان التكامل الكامل بينها.
- 🔐 تحميل ملفات البيئة
.envحسب الأولوية - 🌍 إعداد المنطقة الزمنية (
APP_TIMEZONE– الافتراضي:Africa/Cairo) - 🧠 تخزين ذكي لقيم البيئة عبر
EnvHelper - 🧱 نقطة بدء موحّدة للتطبيقات باستخدام
Bootstrap::init() - 🚦 تفعيل "الوضع الآمن" (Safe Mode) لحماية بيئة الإنتاج
- 🧪 تغطية كاملة بالاختبارات الآلية (PHPUnit + CI)
- 🐳 جاهزة للتكامل مع Docker و GitHub Actions
يقوم maatify/bootstrap بتحميل ملف واحد فقط من ملفات البيئة، حسب الترتيب التالي:
| الأولوية | الملف | الاستخدام |
|---|---|---|
| 1️⃣ | .env.local |
إعدادات خاصة بالمطور (محلية وخاصة) |
| 2️⃣ | .env.testing |
إعدادات بيئة الاختبار أو CI |
| 3️⃣ | .env |
الإعدادات الأساسية لبيئة الإنتاج |
| 4️⃣ | .env.example |
ملف افتراضي يُستخدم كنسخة توضيحية |
بمجرد العثور على ملف بيئة صالح، يتوقف التحميل مباشرة لمنع أي ملف لاحق من استبدال القيم. وتُستخدم طريقة
Dotenv::createImmutable()(من مكتبة vlucas/phpdotenv) لتأمين القيم ومنع التعديل عليها.
use Maatify\Bootstrap\Core\Bootstrap;
Bootstrap::init();
// الوصول إلى القيم المحمّلة من البيئة
$env = $_ENV['APP_ENV'] ?? 'production';
echo "يتم التشغيل في بيئة: $env";ولتشغيل وضع التشخيص:
use Maatify\Bootstrap\Core\BootstrapDiagnostics;
use Maatify\PsrLogger\LoggerFactory;
$logger = LoggerFactory::create('bootstrap');
$diag = new BootstrapDiagnostics($logger);
print_r($diag->run());لتوحيد البيئة بين التطوير وبيئة الاختبار (CI):
docker compose up --build
docker compose exec bootstrap composer run-script testلتشغيل الاختبارات محليًا:
composer run-script testيتم تنفيذ الاختبارات تلقائيًا في نظام GitHub Actions من خلال:
.github/workflows/tests.yml
التوثيق المفصّل لكل مراحل التطوير (من المرحلة 1 إلى 7): 👉 docs/README.full.md
Maatify Bootstrap — «تهيئة واحدة، واستقرار في كل مكان».
ترخيص MIT © Maatify.dev
يمكنك استخدام هذه المكتبة وتعديلها وتوزيعها بحرّية مع الحفاظ على النسبة إلى المصدر.
تم بناء maatify/bootstrap بالاعتماد على مشاريع مفتوحة المصدر أساسية:
| المكتبة | الوصف | الاستخدام داخل المشروع |
|---|---|---|
| vlucas/phpdotenv | مكتبة شهيرة لتحميل ملفات البيئة .env |
تستخدم لتحميل القيم بشكل آمن وغير قابل للتعديل في جميع مشاريع Maatify. |
| psr/log | واجهة تسجيل موحّدة من PHP-FIG (PSR-3) | تُستخدم لتمكين نظام تسجيل متوافق وقابل للاستبدال ضمن BootstrapDiagnostics. |
| phpunit/phpunit | إطار عمل للاختبارات في PHP | يُستخدم لتشغيل جميع الاختبارات الآلية وضمان استقرار الحزم. |
شكر خاص لمطوري هذه المشاريع مفتوحة المصدر لتقديمهم اللبنات الأساسية التي بُني عليها هذا المشروع ❤️
تم التطوير بواسطة: Maatify.dev
المسؤول: Mohamed Abdulalim
المشروع: maatify:bootstrap