mini framework PHP: شنو خاصك تفهم تحت Laravel
بني mini framework بـ PHP: routeur وcontrôleurs وvues وPDO، مع SQL بـ jointures وSingleton وRepository من E29. ومعاه التحدي ديال Lara Academy.
كاين حتى ب : Français

تبني mini framework بـ PHP هي أحسن طريقة باش تفهم شنو كيدير Laravel فبلاصتك. فـ l'épisode E29، Mehdi كيبدا من boutique مصاوبة بـ Laravel باش يورّيك شنو خاصك تعرف تحت الـ framework: requête SQL فيها جوج jointures، Singleton، Repository وDevTools. ومن هنا جا التحدي ديال Lara Academy: بني mini Laravel ديالك، شرحو، وشارك الـ repo ديالك فـ GitHub.
علاش Laravel ما كيعفيكش من SQL؟
المثال ديال l'épisode: عندك boutique بـ Laravel، وكلشي باين خدام. جاك le client وقال ليك: بغيت le total ديال les commandes payées، لكل client بوحدو. عندك 3 ديال les tables: users وorders وorder_items.
حتى واحد ما غادي يسولك شحال من commande ديال Artisan حافظ. غادي يسولك: واش le résultat صحيح؟ وباش تجاوب، خاصك تعرف:
- تربط les tables بـ jointures؛
- تفيلتري بـ WHERE، يعني غير les commandes payées؛
- تجمع بـ GROUP BY وتحسب بـ SUM؛
- تقرا la requête SQL اللي خرجات، وتشرح علاش عطات هاد le résultat.
ها requête كتعاود نفس المثال ديال l'épisode (les montants مخزنين بالسنتيم):
SELECT u.id, u.name,
SUM(i.quantity * i.unit_price_cents) AS total_cents
FROM orders AS o
JOIN users AS u ON u.id = o.user_id
JOIN order_items AS i ON i.order_id = o.id
WHERE o.status = 'paid'
GROUP BY u.id, u.name
ORDER BY u.id;Eloquent يقدر يبني نفس la requête بـ Query Builder ديالو (join وwhere وselectRaw وgroupBy). كيسهّل الكتابة، ولكن ما كيلغيش SQL: إلا كان le total غالط، غير ملي تقرا SQL غادي تعرف فين تقلّب.
شنو هو Singleton، فـ PHP natif وفـ Service Container؟
فـ PHP natif، Singleton هو classe إلا عيّطتي لنفس méthode جوج مرات، كترجع ليك نفس instance، يعني نفس l'objet.
فـ Laravel، Service Container يقدر يدبّر ليك هادشي بـ singleton، بلا ما تكتب le mécanisme كامل بيدك:
$this->app->singleton(Catalog::class, fn () => new Catalog());
// من بعد: app(Catalog::class) === app(Catalog::class) → trueولكن السؤال الحقيقي باقي عندك: شنو غادي تحط فهاد instance؟ وشنو la durée de vie ديالها؟ مثلا، l'utilisateur اللي داخل ما عندو ما يدير فـ objet مشترك.
علاش كيصلح Repository، وواش خاصو يكون فكل بلاصة؟
Repository كيفصل accès aux données على logique métier ديال التطبيق. يعني الكود اللي كيدبّر الخدمة ما تبقاش فيه les requêtes مخلّطين فكل بلاصة؛ كيقول غير لـ interface: « جيب ليا هاد commande ».
interface OrderRepository
{
public function findById(int $id): ?OrderRecord;
}فـ l'épisode كاينين جوج implémentations لنفس interface: وحدة بـ PDO ووحدة بـ Eloquent. والكود اللي كيستعمل هاد interface ما كيتبدلش ملي كتدوز من وحدة للأخرى.
جوج ملاحظات مهمين:
- Eloquent ماشي هو Repository؛
- ماشي كل CRUD خاصنا نزيدو ليه هاد couche. كنختاروها على حساب الحاجة.
كيفاش تقلّب على bug بلا ما تخمّن؟
بحال médecin كيستعمل l'échographie باش يشوف شنو كاين فالداخل، حتى نتا محتاج تشوف شنو واقع فالـ site، ماشي غير تخمّن. الطريقة:
- حل l'onglet Network، وشوف la requête اللي تسيفطات وla réponse اللي رجعات من le serveur؛
- كمّل فالـ backend، وشوف la requête SQL اللي تنفّذات بصح؛
- فهم، ومن بعد جرّب le correctif.
والصراحة فالمستوى ديالك؟
l'épisode كيسالي بنقطة كتفوت الكود: الخدمة أمانة. إلا قلتي لـ client « نقدر نديرها »، كون صريح فالمستوى ديالك، وسول ملي ما تعرفش. ماشي عيب تقول « ما عارفش ». العيب هو توهم الناس بالتمكّن، وترفض تتعلّم.
شنو خاص يكون فـ mini framework بـ PHP؟
الفكرة هي تفهم شنو كاين وراء الـ framework، وتكتبو بكود PHP ديالك. mini framework فيه على الأقل:
- routeur كيربط URL بـ fonction ولا بـ contrôleur؛
- contrôleurs كينسّقو بلا ما يكتبو SQL ولا HTML؛
- vues كيعرضو les données؛
- accès aux données بـ PDO، بـ requêtes préparées فاهمهم؛
- وإلا بغيتي تزيد، container صغير كيعطيك les objets اللي محتاج.
ما محتاجش تبدا من الصفر: المقال شنو هو MVC فـ PHP فيه الكود ديال Router وController وModel بـ PDO وView، من الكورس E10. بدا صغير: route وحدة، contrôleur واحد، vue وحدة. بني، جرّب، وشرح.
كيفاش تشارك؟
صفحة التحدي كاينة فـ laraibi.com، Academy، Défi. باش تقترح المشروع ديالك، وجّد:
- repo GitHub public؛
- README كيشرح l'installation وكيفاش نشغّلو المشروع؛
- démo؛
- شي سطور على شنو تعلّمتي.
خاصك compte مفعّل: إلا ما عندكش، كليكي على « Créer un compte »، ومن بعد الـ lien اللي غادي يوصلك فالإيميل كيخليك تختار mot de passe وتفعّل الحساب. كل مشروع كنراجعوه قبل ما يبان فالصفحة؛ ومن بعد القبول، الكوميونوتي تقدر تشوف الكود والشرح وتتعلّم منّو.
أسئلة كيتعاودو
واش خاصني نعرف Laravel باش نبني mini framework بـ PHP؟
لا. اللي خاصك هو PHP، وles requêtes préparées بـ PDO، والفكرة ديال MVC. معرفة Laravel كتعاونك تعرف الطرفات (routes، contrôleurs، vues، container)، ولكن الهدف هو تكتبهم نتا بيدك.
واش Eloquent كيعوّض SQL؟
لا. Eloquent وQuery Builder ديالو كيبنيو ليك la requête، ولكن إلا كان شي total غالط، خاصك تقرا SQL اللي خرج، وتفهم les jointures وWHERE وGROUP BY وSUM.
واش خاص الـ mini framework ديالي يكون فيه container وRepository؟
لا، هادو زيادة. الأساس هو routeur، contrôleurs، vues، والوصول للداتا بـ PDO. Repository ما كيصلح غير إلا كانت الحاجة ليه.
شنو خاصني نعطي باش نشارك فالتحدي؟
repo GitHub public، وREADME ديال l'installation، وdémo، وشي سطور على شنو تعلّمتي، مع compte مفعّل فـ laraibi.com. كل مشروع كيتراجع قبل ما يبان فصفحة التحدي.
شنو خاصك تحفظ
- Eloquent كيسهّل الخدمة، ولكن requête فيها جوج jointures وWHERE وGROUP BY وSUM كتتفهم بـ SQL.
- Service Container كيدبّر ليك singleton؛ ونتا اللي كتقرر شنو فيه وشحال كيعيش.
- Repository كيفصل les données على logique métier؛ Eloquent ماشي Repository، وماشي كل CRUD محتاجو.
- DevTools هو اللول (Network)، ومن بعد SQL اللي تنفّذ: كنشوفو قبل ما نصلحو.
- التحدي: mini framework بـ PHP (routeur، contrôleurs، vues، PDO)، وrepo GitHub public فيه README وdémo وشنو تعلّمتي.
شوف les épisodes
- Laravel بلا ما تزاپي les bases: PHP وSQL وdesign patterns (E29)
- تحدّي PHP: صفحة المشاركة فـ mini Laravel راه ولات (E31)
المصادر
- PHP Data Objects (PDO)، الدوكيمونتاسيون الرسمية ديال PHP
- Service Container، الدوكيمونتاسيون الرسمية ديال Laravel
باش تمشي بعيد
- الكود ديال MVC مكتوب باليد: شنو هو MVC فـ PHP والكورس E10.
- les requêtes préparées بـ PDO: mini CRUD بـ PHP وMySQL (E05).
- باش تتبّع التنفيذ خطوة بخطوة: صحّح JavaScript وPHP (E24).
- المسار: تطوير الويب Full Stack.
- تعلّم مع الذكاء الاصطناعي بلا ما تفقد يدّك: البرمجة بلا نسخ ولصق.
Quiz: 3 أسئلة باش تتأكد
حتى حاجة ما كتصيفط: الأجوبة ديالك كيبقاو ف المتصفح ديالك.
تكتب من الدرس والنص ديالو بمساعدة أدوات الذكاء الاصطناعي، وراجعو وتأكد منو Mehdi Laraibi نهار 4 نونبر 2026.



