|
| 1 | + |
| 2 | + |
| 3 | +--- |
| 4 | + |
| 5 | +# ⚙️ Maatify Bootstrap |
| 6 | + |
| 7 | +[](https://packagist.org/packages/maatify/bootstrap) |
| 8 | +[](https://packagist.org/packages/maatify/bootstrap) |
| 9 | +[](https://github.com/Maatify/bootstrap/actions/workflows/tests.yml) |
| 10 | +[](https://packagist.org/packages/maatify/bootstrap) |
| 11 | +[](LICENSE) |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +### طبقة تهيئة موحّدة للبيئة وتشخيص الأنظمة |
| 16 | +**المشروع:** `maatify:bootstrap` |
| 17 | +**الإصدار:** 1.0.0 |
| 18 | +**الترخيص:** MIT |
| 19 | +**المطوّر:** [Mohamed Abdulalim (megyptm)](mailto:mohamed@maatify.dev) |
| 20 | +**© 2025 Maatify.dev** |
| 21 | + |
| 22 | +> 🔗 [English Version](./README.md) |
| 23 | +
|
| 24 | +--- |
| 25 | + |
| 26 | +## 🧭 نظرة عامة |
| 27 | + |
| 28 | +مكتبة `maatify/bootstrap` هي **الأساس المركزي** لنظام Maatify بالكامل، |
| 29 | +حيث توفّر تهيئة موحّدة للبيئة (Environment Initialization) وتشخيصات دقيقة (Diagnostics) |
| 30 | +إضافة إلى ضبط المنطقة الزمنية (Timezone) وفحص أمان التشغيل قبل البدء في تنفيذ أي تطبيق أو مكتبة ضمن منظومة Maatify. |
| 31 | + |
| 32 | +تهدف إلى ضمان تشغيل مستقر ومتوقّع وآمن عبر جميع البيئات: |
| 33 | +- بيئة التطوير المحليّة |
| 34 | +- أنظمة الاختبار والتكامل المستمر (CI/CD) |
| 35 | +- بيئات الإنتاج والاستضافة الفعلية |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## ⚙️ التثبيت |
| 40 | + |
| 41 | +```bash |
| 42 | +composer require maatify/bootstrap |
| 43 | +```` |
| 44 | + |
| 45 | +--- |
| 46 | + |
| 47 | +## 📦 الاعتمادات |
| 48 | + |
| 49 | +تعتمد هذه المكتبة على مجموعة من المشاريع مفتوحة المصدر: |
| 50 | + |
| 51 | +| الاعتماد | الوظيفة الأساسية | الرابط | |
| 52 | +| -------------------- | -------------------------------------------------- | ------------------------------------------------------------------ | |
| 53 | +| **vlucas/phpdotenv** | تحميل ملفات البيئة `.env` بشكل آمن ومنظّم | [github.com/vlucas/phpdotenv](https://github.com/vlucas/phpdotenv) | |
| 54 | +| **psr/log** | واجهة تسجيل قياسية (PSR-3 Logger Interface) | [www.php-fig.org/psr/psr-3](https://www.php-fig.org/psr/psr-3/) | |
| 55 | +| **phpunit/phpunit** | إطار عمل لاختبارات الوحدة (Unit Testing Framework) | [phpunit.de](https://phpunit.de) | |
| 56 | + |
| 57 | +> تبني `maatify/bootstrap` هذه المكتبات لتوفير طبقة تهيئة آمنة وموثوقة وموحّدة |
| 58 | +> تُستخدم في جميع مكتبات وتطبيقات Maatify. |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## 🧩 المزايا الرئيسية |
| 63 | + |
| 64 | +* 🔐 تحميل ملفات البيئة `.env` حسب الأولوية |
| 65 | +* 🌍 إعداد المنطقة الزمنية (`APP_TIMEZONE` – الافتراضي: `Africa/Cairo`) |
| 66 | +* 🧠 تخزين ذكي لقيم البيئة عبر `EnvHelper` |
| 67 | +* 🧱 نقطة بدء موحّدة للتطبيقات باستخدام `Bootstrap::init()` |
| 68 | +* 🚦 تفعيل "الوضع الآمن" (Safe Mode) لحماية بيئة الإنتاج |
| 69 | +* 🧪 تغطية كاملة بالاختبارات الآلية (PHPUnit + CI) |
| 70 | +* 🐳 جاهزة للتكامل مع Docker و GitHub Actions |
| 71 | +
|
| 72 | +--- |
| 73 | +
|
| 74 | +## 🧠 أولوية تحميل ملفات البيئة |
| 75 | +
|
| 76 | +يقوم `maatify/bootstrap` بتحميل **ملف واحد فقط** من ملفات البيئة، حسب الترتيب التالي: |
| 77 | +
|
| 78 | +| الأولوية | الملف | الاستخدام | |
| 79 | +| -------- | -------------- | ---------------------------------- | |
| 80 | +| 1️⃣ | `.env.local` | إعدادات خاصة بالمطور (محلية وخاصة) | |
| 81 | +| 2️⃣ | `.env.testing` | إعدادات بيئة الاختبار أو CI | |
| 82 | +| 3️⃣ | `.env` | الإعدادات الأساسية لبيئة الإنتاج | |
| 83 | +| 4️⃣ | `.env.example` | ملف افتراضي يُستخدم كنسخة توضيحية | |
| 84 | +
|
| 85 | +> بمجرد العثور على ملف بيئة صالح، **يتوقف التحميل مباشرة** |
| 86 | +> لمنع أي ملف لاحق من استبدال القيم. |
| 87 | +> وتُستخدم طريقة `Dotenv::createImmutable()` (من مكتبة **vlucas/phpdotenv**) لتأمين القيم ومنع التعديل عليها. |
| 88 | +
|
| 89 | +--- |
| 90 | +
|
| 91 | +## 🧠 مثال على الاستخدام |
| 92 | +
|
| 93 | +```php |
| 94 | +use Maatify\Bootstrap\Core\Bootstrap; |
| 95 | + |
| 96 | +Bootstrap::init(); |
| 97 | + |
| 98 | +// الوصول إلى القيم المحمّلة من البيئة |
| 99 | +$env = $_ENV['APP_ENV'] ?? 'production'; |
| 100 | +echo "يتم التشغيل في بيئة: $env"; |
| 101 | +``` |
| 102 | + |
| 103 | +ولتشغيل وضع التشخيص: |
| 104 | + |
| 105 | +```php |
| 106 | +use Maatify\Bootstrap\Core\BootstrapDiagnostics; |
| 107 | +use Maatify\PsrLogger\LoggerFactory; |
| 108 | + |
| 109 | +$logger = LoggerFactory::create('bootstrap'); |
| 110 | +$diag = new BootstrapDiagnostics($logger); |
| 111 | + |
| 112 | +print_r($diag->run()); |
| 113 | +``` |
| 114 | + |
| 115 | +--- |
| 116 | + |
| 117 | +## 🧰 التكامل مع Docker |
| 118 | + |
| 119 | +لتوحيد البيئة بين التطوير وبيئة الاختبار (CI): |
| 120 | + |
| 121 | +```bash |
| 122 | +docker compose up --build |
| 123 | +docker compose exec bootstrap composer run-script test |
| 124 | +``` |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +## 🧪 الاختبارات |
| 129 | + |
| 130 | +لتشغيل الاختبارات محليًا: |
| 131 | + |
| 132 | +```bash |
| 133 | +composer run-script test |
| 134 | +``` |
| 135 | + |
| 136 | +يتم تنفيذ الاختبارات تلقائيًا في نظام GitHub Actions من خلال: |
| 137 | + |
| 138 | +``` |
| 139 | +.github/workflows/tests.yml |
| 140 | +``` |
| 141 | + |
| 142 | +--- |
| 143 | + |
| 144 | +## 📄 التوثيق الكامل |
| 145 | + |
| 146 | +التوثيق المفصّل لكل مراحل التطوير (من المرحلة 1 إلى 7): |
| 147 | +👉 [**docs/README.full.md**](./docs/README.full.md) |
| 148 | + |
| 149 | +--- |
| 150 | + |
| 151 | +**Maatify Bootstrap** — *«تهيئة واحدة، واستقرار في كل مكان».* |
| 152 | + |
| 153 | +--- |
| 154 | + |
| 155 | +## 🪪 الترخيص |
| 156 | + |
| 157 | +**[ترخيص MIT](LICENSE)** © [Maatify.dev](https://www.maatify.dev) |
| 158 | +يمكنك استخدام هذه المكتبة وتعديلها وتوزيعها بحرّية مع الحفاظ على النسبة إلى المصدر. |
| 159 | + |
| 160 | +--- |
| 161 | + |
| 162 | +## 📚 المشاريع المعتمدة عليها |
| 163 | + |
| 164 | +تم بناء `maatify/bootstrap` بالاعتماد على مشاريع مفتوحة المصدر أساسية: |
| 165 | + |
| 166 | +| المكتبة | الوصف | الاستخدام داخل المشروع | |
| 167 | +| ----------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------- | |
| 168 | +| **[vlucas/phpdotenv](https://github.com/vlucas/phpdotenv)** | مكتبة شهيرة لتحميل ملفات البيئة `.env` | تستخدم لتحميل القيم بشكل آمن وغير قابل للتعديل في جميع مشاريع Maatify. | |
| 169 | +| **[psr/log](https://www.php-fig.org/psr/psr-3/)** | واجهة تسجيل موحّدة من PHP-FIG (PSR-3) | تُستخدم لتمكين نظام تسجيل متوافق وقابل للاستبدال ضمن `BootstrapDiagnostics`. | |
| 170 | +| **[phpunit/phpunit](https://phpunit.de)** | إطار عمل للاختبارات في PHP | يُستخدم لتشغيل جميع الاختبارات الآلية وضمان استقرار الحزم. | |
| 171 | + |
| 172 | +> شكر خاص لمطوري هذه المشاريع مفتوحة المصدر |
| 173 | +> لتقديمهم اللبنات الأساسية التي بُني عليها هذا المشروع ❤️ |
| 174 | +
|
| 175 | +--- |
| 176 | + |
| 177 | +## 🧱 المطوّرون وحقوق النشر |
| 178 | + |
| 179 | +**تم التطوير بواسطة:** [**Maatify.dev**](https://www.maatify.dev) |
| 180 | +**المسؤول:** Mohamed Abdulalim |
| 181 | +**المشروع:** `maatify:bootstrap` |
| 182 | + |
| 183 | +--- |
0 commit comments