1. مقدمة إلى لغة PHP 7
يتوفر PDF لهذا المستند |HERE|.
الأمثلة الواردة في هذا المستند متاحة |HERE|.
تندرج هذه الوثيقة ضمن سلسلة من أربع مقالات:
- [مقدمة إلى لغة PHP7 من خلال الأمثلة (2019)]. هذه هي الوثيقة الحالية؛
- [مقدمة إلى لغة ECMASCRIPT6 من خلال الأمثلة (2019)]؛
- [مقدمة إلى إطار عمل VUE.JS من خلال الأمثلة (2019)]؛
- [مقدمة إلى إطار عمل NUXT.JS من خلال الأمثلة (2019)]؛
جميعها وثائق للمبتدئين. المقالات متسلسلة منطقياً ولكنها غير مترابطة بشكل كبير:
- تقدم الوثيقة [1] لغة PHP 7. القارئ الذي يهتم فقط بلغة PHP وليس بلغة جافا سكريبت الواردة في المقالات التالية سيتوقف عند هذا الحد؛
- تهدف الوثائق [2-4] إلى إنشاء عميل جافا سكريبت للخادم الخاص بحساب الضرائب الذي تم تطويره في الوثيقة [1]؛
- تتطلب أطر عمل جافا سكريبت [vue.js] و [nuxt.js] الواردة في المقالتين 3 و 4 معرفة لغة جافا سكريبت في أحدث إصدارات ECMASCRIPT، أي الإصدار 6. وبالتالي، فإن الوثيقة [2] موجهة إلى أولئك الذين لا يعرفون هذه النسخة من جافا سكريبت. وهي تشير إلى خادم حساب الضريبة الذي تم إنشاؤه في الوثيقة [1]. وقد يحتاج قارئ الوثيقة [2] أحيانًا إلى الرجوع إلى الوثيقة [1]؛
- وبمجرد إتقان ECMASCRIPT 6، يمكن الانتقال إلى إطار العمل VUE.JS الذي يتيح إنشاء عملاء جافا سكريبت يتم تشغيلهم في متصفح في وضع SPA (تطبيق صفحة واحدة). هذا هو المستند [3]. وهو يشير في الوقت نفسه إلى خادم حساب الضريبة الذي تم إنشاؤه في المستند [1] وإلى كود عميل جافا سكريبت المستقل الذي تم إنشاؤه في [2]. سيحتاج قارئ المستند [3] أحيانًا إلى الرجوع إلى المستندين [1] و[2]؛
- وبمجرد إتقان VUE.JS، يمكننا الانتقال إلى إطار العمل NUXT.JS الذي يتيح إنشاء عملاء جافا سكريبت يتم تشغيلهم في المتصفح في وضع SSR (Server Side Rendered). وهو يشير في الوقت نفسه إلى خادم حساب الضريبة المُدمج في المستند [1]، وكود عميل جافا سكريبت المستقل الذي تم إنشاؤه في [2]، وكذلك إلى التطبيق [vue.js] الذي تم تطويره في المستند [3]. وقد يحتاج قارئ المستند [4] أحيانًا إلى الرجوع إلى المستندات [1] و[2] و[3]؛
يقدم هذا المستند قائمة ببرامج نصية لـ PHP 7 في مجالات مختلفة (بنى اللغة، والوصول إلى الملفات، وقواعد البيانات، وشبكة الإنترنت). يتم تناول برمجة الويب من خلال خدمات الويب. وقد أُطلق في هذا المستند مصطلح «خدمة ويب» على أي تطبيق ويب ينتج نصًا عاديًا. وهي عبارة عن خوادم بيانات وليست خوادم صفحات ويب، والتي تمثل مزيجًا من HTML وCSS وجافا سكريبت. يتم في هذا المستند تناول مفاهيم الويب التقليدية (بروتوكول HTTP، والاستجابات jSON أو XML، وإدارة الجلسة، والمصادقة) التي تُستخدم أيضًا في برمجة الويب التقليدية.
في الوقت الحاضر، من الشائع إنشاء تطبيقات الويب في وضع العميل/الخادم:

- في [1]، يعرض متصفح الويب صفحات الويب الموجهة إلى مستخدم [5, 7]. تحتوي هذه الصفحات على جافا سكريبت الذي ينفذ عميل خدمة بيانات ويب [2] بالإضافة إلى عميل خادم أجزاء صفحات الويب [3]. يُعد Angular 2 من Google (مايو 2019) إطار عمل JS راسخًا في هذا المجال؛
- في [2]، خادم الويب هو خادم بيانات. ويمكن كتابته بأي لغة برمجة. ولا ينتج صفحات ويب بالمعنى التقليدي (HTML، CSS، جافا سكريبت) إلا ربما في المرة الأولى. ولكن يمكن الحصول على هذه الصفحة الأولى من خادم ويب تقليدي [3] (وليس خادم بيانات). ثم يقوم جافا سكريبت للصفحة الأولية بإنشاء صفحات الويب المختلفة للتطبيق عن طريق الحصول على البيانات [4] لعرضها من خادم الويب الذي يعمل كخادم بيانات [2]. كما يمكنه الحصول على أجزاء من صفحة الويب [5] لتزيين هذه البيانات من خادم صفحات الويب [3]؛
- في [4]، يقوم المستخدم ببدء إجراء؛
- في [6,7]: يتلقى المستخدم البيانات المُغلفة بواسطة جزء من صفحة الويب؛
سنقوم في هذا المستند بكتابة تطبيقات عميل/خادم في PHP7 ذات البنية التالية:

لدينا هنا تطبيق عميل/خادم مكتوب بلغة PHP. وسيقوم برنامج نصي للوحدة الطرفية [9] بالاستعلام عن خادم البيانات [4]. ويمكن إعادة استخدام ما سيتم تعلمه هنا لكتابة خدمة البيانات في تطبيق ويب. يمكن الاحتفاظ بخدمة البيانات PHP، بينما سيتم استبدال العميل PHP بعميل جافا سكريبت.
وكخيط رفيع يربط بين أجزاء هذا المستند، سنقوم بإنشاء خدمة لحساب الضريبة في 13 نسخة. وستتخذ النسخة 13 البنية التالية:

ستتبع الطبقة [web] في الخادم بنية MVC (النموذج – العرض – وحدة التحكم). ويهدف المقرر الدراسي PHP 7 بأكمله إلى بناء هذه النسخة.
تحتوي البرامج النصية الواردة في هذا المستند على تعليقات، كما تم توثيق نتائج تنفيذها في وحدة التحكم. وتُقدَّم أحيانًا تفسيرات إضافية. يتطلب هذا المستند قراءة نشطة: لفهم أي برنامج نصي، يجب قراءة كوده وتعليقاته ونتائج تنفيذه في آن واحد.
الأمثلة الواردة في الوثيقة متاحة |هنا|.
يمكن العثور على PDF الخاص بهذا المستند |هنا|.
Serge Tahé، يوليو 2019