(f) عزيزي جاد.
أما بعد , و بعد
الصلاة و السلام على أطيب الخلق و خالق المعرفة "الإنسان":
مقدمة:
1- تعريف:
لغة ال PHP و تعني أحرفها "Personnal Home Page", هي لغة برمجة تختص بإنشاء صفحات الويب (جهة سيرفر/مخدم الويب) و هي لغة وليدة و قريبة من اللغة المشهورة PERL(أنظر للمحة التاريخية) .
و كما PERL فإنها لغة "مترجمة" (Interpreté) و ليست لغة معالجة (Compilé) (راجع تفسير المصطلحين في جزء شرح مبادئ اللغة).
تتميز هذه اللغة بكونها لا تعتمد على نظام التشغيل للسيرفر و لذلك انتشرت بسهولة في عالم الأنترنت الذي يعتبر مكاناً لأنظمة خليطة و متنوعة.
كما تتميز بسهولتها مقارنة مع اللغات الأخرى التي كانت شائعة قبلها (C, Perl ...).
2- لمحة تاريحية عن لغة ال PHP :
في البدء كان ال PERL و كانت لغة منتشرة بكثرة في الأنترنت و خاصة بأنظمة عالم (يونيكس) [1].
لكن لغة ال PERL و التي تعتبر لغة أقدم من الأنترنت نفسه و تعتمد أساساً للبرمجة التقليدية ضمن أنظمة التشغيل , اعتبرت صعبة و قليلة المرونة في عالم الويب.و شرح هذه اللغة يحتاج لكتب ليست هذه اللمحة التاريخية مجالها.
لذا ففي البداية قام أحد الطلاب "Rasmus Lerdorf" بإنشاء "مكتبة" أدوات في لغة ال PERL في عام 1995 لتسهيل كتابة ال CV الشخصية على الأنترنت و نشر مكتبته هذه على الويب و أسماها :
"Personnal Home Page Tools"
ثم قام بإعادة كتابتها بلغة ال C مضيفاً إليها شيئاً فشيئاً أدوات لمعالجة قواعد المعطيات .. الخ.
بعد نشره لمكتبته الكبيرة على الأنترنت ليستفيد منها أكبر عدد ممكن من المستخدمين و المبرمجين و ليقوموا كذلك بالإضافة لها, تحولت المكتبة للغة حملت اسم:
(PHP/FI)"Personal Home Page / Forms Interpreter"
أخيراً نشأت لغة ال PHP 3.0 بإعادة كتابتها و بالتعاون بين ثلاثة أشخاص:
Rasmus Lerdorf, Andi Gutmans,Zeev Suraski
و ذلك عام 1998
3- شرح مختصر لمبادئ لغة ال PHP
-الفرق بين ال PHP و ال HTML
بل أن السؤال الحقيقي يجب أن يكون ما هو الرابط بينهما.
ال HTML هي "لغة" عرض للصفحات, و هي حقائب يفهمها المتصفح و ليست لغة بالمعنى الحقيقي للكلمة.
فال HTML هي لغة يفهمها المتصفح و يعرف من خلالها كيفية عرض المعطيات و النصوص , فهذا نص كبير و هذا لونه أخضر و ذاك أحمر أو مخطط, و كذلك ترتيب الأسطر و توزيع الجداول .. الخ.
بينما لغة ال PHP فهي لغة معالجة تعالج المعطيات التي تحصل عليها من قاعدة المعطيات أو من المتصفح و يقوم بتنفيذها السيرفر نفسه. أما النتيجة النهائية لبرنامج PHP فهو محتوى HTML.
ربما سيتضح الأمر أكثر بمثال عملي.
لناخذ كمثال صفحات نادي الفكر العربي. فما الذي يحدث عندما نكتب بالمتصفح هذا العنوان:
http://www.nadyelfikr.net/index.php
المتصفح هو الزبون و عندما تكتب هذا العنوان فيه فسيفهم أنك تريد الوصول لصفحة index.php في موقع : nadyelfikr.net و أنت تريد الوصول إليها عن طريق البروتوكول http
لذا فيقوم بإرسال طلب على الأنترنت للحصول على هذه الصفحة.
بعد عبور للشبكة,و "المرمطة" بالمواصلات سيصل الطلب لسيرفر النادي.
السيرفر سيحول الطلب - لأن البروتوكول هو HTTP - لسيرفر الويب (Apache عادة)
عندما يعرف سيرفر الويب أن المطلوب هي صفحة PHP سيوزعه للمعالج PHP ليترجم الصفحة و تعليماتها و يرسل له النتيجة.
هذا المعالج سيقوم بمعالجة الصفحة و ترجمة كل تعليمة فيها , مثلاً الإتصال بقاعدة المعطيات و طلب المعلومات التي بها أو جزء منها.
أو حسابات معقدة ... الخ
بالنهاية فإن البرنامج سيصمم محتوى HTML بناء على النتائج التي عنده و بناء على طريقة برمجة الصفحة و يرسلها لسيرفر الويب و الذي سيحولها بدوره للجهاز و المتصفح الذي طلب الصفحة.
بينما لو كانت الصفحة هي صفحة HTML فإن السيرفر سيبعث محتوى الصفحة كما هو بدون أي معالجة.
لنفهم هذا الفارق يمكن أن نقارن في مطعم ما الذي يحصل عندما نطلب وجبة أو نطلب شوكة.
فعندما نطلب فاصولياء بالرز مثلاً من السيرفر (الخادم) فإنه سيذهب و يطلب من طباخيه أن يطبقوا وصفة الفاصولياء بالرز ثم يأتيك بالوجبة بعد معالجتها. أي أنه لن يأتيك بالرز الني و الفاصولياء النية.
بينما عندما تطلب شوكة فسيعطيك الشوكة دون أي معالجة وسيطة.
الزبون بحالتنا هو المتصفح و ليس المستخدم النهائي.
نحن هنا سندخل للمطبخ و نحاول فهم طريقة عمل الوجبات. :)
- لغة ويب عملية و سهلة , مستويات البرمجة:
لغة ال PHP هي لغة Interpretation و ليست لغة Compilation
أي أنها لغة تحتاج بكل طلب من السيرفر لمترجم يحول تعليماتها لتعليمات مفهومة من نظام التشغيل. بعكس لغة مثل ال C بحيث تكون نتيجتها النهائية برنامج مكتوب أو معالج للغة النظام نفسه.
لغة ال Compilation ميزتها سرعتها, و مشكلتها أنها تعتمد على نواة النظام المستخدم من قبل السيرفر, لذلك تم الإستغناء عنها في أغلب برامج الأنترنت الذي يحتوي أنظمة هجينة و مختلفة.
أي تعتبر لغة ال PHP ملائمة تماماً للأنترنت.
كما أنها لغة متطورة بما أنها مجانية و كودها موجود لكل من يرغب بتطويرها, و بكثرة استخدمها تطورت هي بذاتها بشكل سريع جداً.
هذه اللغة تستغل قواعد المعطيات كلها و لا سيما ال MYSQL بسهولة, و يمكن معها بسهولة أيضاً إحترام فصل المستويات الثلاث لأي برنامج.
المستويات الثلاث هي :
المعطيات , المعالجة, العرض.
بحالة برنامج النادي فيمكن أن نعرف هذه المستويات الثلاثة ب :
المعطيات : قاعدة MYSQL
المعالجة : لغة ال PHP
العرض : HTML
البرامج الأفضل هي التي تفصل العرض (HTML) عن المعالجة, و رغم صعوبة هذا العمل في البداية فلقد أصبح أكثر سهولة في السنوات الأخيرة.
في الأمثلة التي سنراها قريباً سنفهم أهمية الفصل بين ال HTML و ال PHP.
- أهمية فصل المعطيات عن العرض :
في برامج البوابات و المنتديات الأولى التي ظهرت على الأنترنت كانت الصفحات تحفظ بشكل HTML من خلال برامج PERL يختلط بها المعطيات بالعرض لها.
هذا الأمر يجعل أي مهمة لتطوير البرنامج مهمة شبه مستحيلة.
استخدام قواعد المعطيات ظهرت كرد على هذه المشكلة العويصة. فنقوم حالياً بحفظ المعطيات : كنصوص الردود بالمواضيع و المعلومات المتعلقة بها. و جميع المعلومات التي لا تتعلق بالمظهر للمنتدى.
بينما يحفظ المظهر أو العرض بصفحات HTML أو حتى يمكن حفظ المحتوى HTML بقاعدة المعطيات على شكل : TEMPLATE
و ال TEMPLATE هو نوع من النمذجة لطريقة معينة لظهور صفحة بغض النظر عن المعطيات التي تحتويها.
يمكن أن نفهم ذلك من خلال بعض الأمثلة لاحقاً.
سأحاول المتابعة مع الدرس الأول اليوم أو غداً.
لكني سأبدأ قبل ذلك بعرض بسيط للأدوات الضرورية للبرمجة على نظام ويندوز و التجربة "محلياً".
مع فائق تحياتي.
ابن سوريا.
[1] اليوم هذه اللغة تطورت كثيراً و صارت متوفرة في عالم الويندوز (Active PERL)