الاثنين، 11 أكتوبر 2010

php لغة المواقع المتطورة


بي اتش بي
(بالإنجليزية: PHP‏) هي لغة نصية (لغة سكريبت) برمجية صُممت أساساً من أجل استخدامها لتطوير وبرمجة تطبيقات الوِب كما يمكن استخدامها لإنتاج برامج قائمه بذاتها وليس لها علاقه بالوِب، كلمة PHP اختصار لـ "PHP: Hypertext Preprocessor".بي اتش بي لغه مفتوحة المصدر يتم تطويرها بواسطة فريق من المتطوعين ويتم إطلاقها تحت رخصة PHP، تدعم البرمجة كائنية التوجه وتركيبها النحوي يشبه كثيراً التركيب النحوي للغة السي هذا بالإضافه إلى انها تعمل على أنظمة تشغيل متعدده مثل لينكس وويندوز.




PHP 3


في عام 1997 تم إعادة كتابة PHP/FI على يد Zeev Suraski وأندي جتمانز بعدما وجدوا ان PHP/FI 2.0 ليست قويه بما فيه الكفايه من أجل كتابة تطبيق تجاره إلكترونية والذي كانوا يعملون عليه كـ مشروع تخرّج لجامعتهم، كان هناك تعاون بينهم وبين مؤسس اللغه Rasmus Lerdorf على ان تكون PHP 3.0 هي النسخة الرسميه بعد PHP/FI.




أحد أهم الميزات التي تميزت بها PHP 3 عن سابقتها انها أصبحت قابله للتوسّع وتوّفر مع هذا الإصدار العديد من المكتبات والدوال، وادّت قابلية التوسّع إلى إقبال العديد من المطورين على تطوير المكتبات الجديدة واضافتها مع اللغه، ويقال ان هذا هو السبب الأساسي للنجاح الذي حققه هذا الإصدار، ومن الميزات الأخرى التي تم اضافتها في هذا الإصدار هي البرمجة كائنية التوجة OOP.


و في هذا الإصدار تم تغيير اسم اللغه ووضعها تحت اسم جديد وهو PHP (بدون FI) والذي كان يحمل اختصاراً لمعنى جديد مختلف عن الإصدار السابق والمعنى هو "PHP: Hypertext Preprocessor".


تم إطلاق PHP 3.0 في يونيو 1998 بعد 9 أشهر من الاختبارات.
PHP 4




في عام 1998، وبعد الانطلاق الرسمي لـ PHP 3.0 بقليل بدأ Zeev Suraski وAndi Gutmans بإعادة كتابة أساس لغة PHP وكان الهدف من ذلك هو تحسين الأداء للبرامج المُعقدة والضخمة وتحسين قابلية اللغه للتوسّع.


المحرك الجديد الذي ظهر بعد إعادة الكتاب تم تسميته بـ محرك ZEND واسم ZEND مأخود من أوائل حروف أسماء مطوريه، ونجحوا في تحقيق اهدافهم عن طريق هذا المحرّك، وتم الإعلان عنه في عام 1999.


تعتمد PHP 4.0 على هذا المحرك وتم الإعلان عن هذا الإصدار من PHP في مايو 2000، بالإضافه إلى تحسين الأداء في هذا الإصدار احتوى كذلك على مجموعه جديده من الميزات مثل دعمه لعدد أكبر من خوادم الوِب، الجلسات، طرق آمنه جديده لمعالجة دخل المستخدم وغيرها.




<br /> <br /> <?php echo $page_title; ?><br />
وقد تم إعلان إيقاف تطوير ودعم PHP 4 في 13 يوليو، 2007[2].

<?php
$page_title = "My website";
?>
<html>
 <head>
  <title>
<?php
echo $page_title;
?>
  </title>
 </head>
 <body>
  Hello
 </body>
</html> 
 
الاستخدام


غالباً ما تعمل لغة بي إتش بي على خادم وِب، كما يمكن استخدامها كـ واجهة سطر اوامر أو استخدامها لتطوير برامج ذات واجهه رسوميه تعمل على حاسوب المستخدم، يمكن استخدام بي اتش بي تحت معظم خوادم الوِب كما أنها تعمل على معظم نظم التشغيل، كما أن فريق تطويرها يزوّد شيفرتها المصدريه كامله حيث يمكن للمستخدمين بناءها وتطويرها بما يناسب احتياجاتهم.




تقوم بي اتش بي أساساً بأخذ الملف الذي يحتوي على اوامر البي اتش بي (ملفات.php) كـ مُدخل وتقوم بإخراج بيانات قابله للعرض.


في الإصدار الرابع من بي اتش بي، تقوم بتحويل الملفات المكتوبة باستخدام البي اتش بي إلى bytecode لمعالجتها عن طريق محرك ZEND,وفي الاصدار الخامس تقدمت لغة ال php بتقنيات عالية جدا وكان اخر اصدار من النسخة الخامسة هو 5.3.0.
استخدامها ناحية الخادم


في الحقيقة صُممت بي اتش بي من أجل استخدامها من ناحية الخادم وبناء تطبيقات وِب تفاعليه، وقد أصبح بناء LAMP مشهوراً جداً في صناعة الوِب كطريقة برمجيات وِب آمنة، غير مكلفة، ويمكن الاعتماد عليها. بي إتش بي مشار إليها كحرف P في LAMP كـ لغة برمجه، بجانب لينكس (L) كـ نظام تشغيل، اباتشي (A) كـ خادم وِب وماي اس كيو ال (M) كـ نظام إدارة قواعد بيانات.




وقد ظهرت أيضاً بناءات أخرى ك WAMP مستبدلة لينكس بـ ويندوز (W)، وMAMP مستبدله لينكس بـ ماك أو اس (M).




يمكن استخدام بي إتش بي مع عدد كبير من أنظمة إدارة قواعد البيانات، وبما انها متوفرة على عدد من نظم التشغيل جعل لها مرونة مكنت بي إتش بي من الانتشار على الكثير من خوادم الإنترنت حول العالم، فأكثر من 18 مليون نطاق يعمل على خوادم مُثبت عليها بي إتش بي.
استخدامها كـ سطر اوامر


تُوفر بي اتش بي كذلك واجهة سطر اوامر، لذا يمكن استخدامها لتطوير مجموعه من البرامج التي تسهّل المهام الإداريه لمدراء النُظم.




استخدامها ناحية العميل


تُوفر بي اتش بي مكتبات واجهات مستخدم رسوميه مثل GTK (عن طريق PHP-GTK) وQt (عن طريق PHP-Qt) مما يجعل تطوير البرامج غير المتعلقة بالوِب امراً مُمكناً.




التركيب النحوي


مثال لطباعة Hello World :
 
<?php
echo 'Hello World';
?>
وأيضا بهذا الشكل
<?php echo 'Wikipedia'?>
 
<br /> <br /> <?php$page_title = 'Wikipedia';echo $page_title;?><br /> <br /> <br /> <br />
تقوم PHP بتنفيذ ما هو بين الوسمين فقط، واي شيء خارج هذا هذين الوسمين فيتم طباعته مباشره ولا يتم معاملته كـ شيفرة PHP، تُمكن هذه الميزة من إدخال شيفرات الـ PHP داخل شيفرات HTML، مثلاً :
 
<html>
 <head>
  <title>
<?php
$page_title = 'Wikipedia';
echo $page_title;
?>
  </title>
 </head>
 <body>
  Hello
 </body>
</html> 
 
المتغيرات تكون مسبوقة بعلامة الدولار - $ - ومن غير الضروري تعريف نوع المتغير، بعكس أسماء الدوال والاصناف، المتغيرات حسّاسه لحالة الحرف، ويتم استخدام علامات الاقتباس المزدوجة - " - من أجل وضع قيمه للمتغير.




بي اتش بي لديها ثلاثة أنواع من التعليقات، /* */ والذي يُستخدم للتعليقات متعددة الاسطر، // و# والذين يستخدمون للتعليقات ذات السطر الواحد.
أنواع البيانات


تقوم بي اتش بي بتخزين الارقام بمدى يعتمد على المعالج التي تعمل عليه، هذا المدى نموذجياً يكون 32 بت من الاعداد الصحيحة، متغيرات الاعداد الصحيحة يمكن ان تكون قيمتها عشريه أو ثمانيّه أو ست عشريه. الاعداد الحقيقيه كذلك تُخزّن بمدى يعتمد على المعالج.




لغة بي اتش بي تحتوي كذلك على نوع Boolean والذي يُسمى بـ "boolean"، كما في لغة Perl الارقام أكبر من صفر يُمكن ان تعتبر true اما الصفر يُمكن ان تعتبر false.


نوع البيانات null يُمثل المتغيرات التي لا تحتوي على القيمة، والقيمة الوحيدة في هذا النوع من البيانات هي NULL.


المصفوفات تدعم الفهارس النصيّة والرقميه، المصفوفات يمكن ان تحتوي عناصر من اي نوع من البيانات التي تدعمها بي اتش بي.
الكائنات




في PHP 3 تم إضافة أساسيات البرمجه غرضية التوجه، وتم إعادة كتابته في PHP 5 من أجل تحسين الأداء وإضافة المزيد من الميزات، في الإصدارات السابقة من بي اتش بي كانت تُعامل الكائنات كـ أنواع بدائيه (بالإنجليزية: Primitive Types‏). وكانت نقطة ضعف هذا الأسلوب في أن الكائن كان يُنسخ كاملاً عندما يتم تكليفه كـ متغير أو عندما يتم تمريره إلى الدوال، وقد تم حل هذه المشكلة PHP 5.


في PHP 5 تم الإعلان عن الأنواع private و protected لكل من الدوال والمتغيرات، وتم الإعلان عن الطريقة القياسيه في تعريف المشيد (بالإنجليزية: constructors‏) والمهدم (بالإنجليزية: destructors‏).




class foo extendكيفية تعريف الصنف foo الذي يرث الصنف bar، وتعريف الدالّة العامة mystaticfunc والتي يمكن استدعاءها بالشكل التالي foo::mystaticfunc();
الموارد
المكتبات


تَضُم بي اتش بي(PHP) عدد كبير من المكتبات الحرّة والمجانية، اغلب هذه المكتبات تُعطي بي اتش بي طبيعتها كلغة لكتابة تطبيقات الوِب، حيث تحتوي على مكتبات للوصول إلى FTP ومجموعه من مكتبات الوصول إلى قواعد البيانات مثل MySQL وSQLite وغيرها، العديد من الدوال تُشبه دوال لغة C.




الإضافات


بي اتش بي تسمح للمطورين بكتابة إضافات لها باستخدام لغة C لإضافة وظائف جديده، هناك أكثر من نوع للاضافات بعضها يُترجم مع شيفرة بي اتش بي والبعض الآخر يعمل في وقت التشغيل (أثناء تنفيذ البرنامج)، تم استخدام الاضافات لدعم مجموعه من الدوال مثل دوال التحكم في العمليات لنظم يونكس، لإضافة Windows API وcURL وبعض الميزات غير المسبوقة مثل IRC وغيرها الكثير، هُناك موقع يطلق عليه اسم PECL يجمع الاضافات ضمنه.




برامج التشفير، تحسين الاداء، التسريع


وظيفة برامج التشفير هي تشفير ملفات بي اتش بي إلى صيغه غير مفهومه بهدف إخفاء الشيفرة البرمجيه لعدّة أسباب، البعض يرى انها أسباب امنيه، والبعض يرى انها مفيده للبرامج التجاريه، يوجد نوعين لبرامج التشفير، النوع الأول يقوم بإخفاء الشيفرة المصدريه، النوع الثاني يقوم بترجمة الشيفرة إلى شيفره أخرى، ثم يتم تركيب إضافة معينه حتى تقوم بدورها بترجمة الشيفرة الناتجة وجعلها مفهومه من ناحية المحرّك الذي سوف يقوم بتنفيذها، أكثر برامج التشفير شهره هي التي توفرها تقنيات Zend وionCube المحدوده.


اما بالنسبة لبرامج تحسين الأداء، فهي تقوم بتحسين جودة الشيفرة المترجمة عن طريق تقليل حجمها وعمل بعض التعديلات التي تقلل من وقت التنفيذ.




أخيراً بالنسبة لبرامج التسريع، فوظيفتها تحسين الأداء عن طريق عملية الكاش، حيث تقوم بتخزين الشيفرة المُترجمة في الذاكره حتى تستخدمها فيما بعد بدلاً من الحاجة إلى ترجمة وتحويل الشيفرة في كُل مرّه يُطلب فيها الملف، تتوفر برامج تجاريه مثل Zend Platform وأخرى حرّه مثل xcache وeAccelerator وAPC




المُنقحات


تساعد المُنقحات (بالإنجليزية: Debugger‏) على تحليل الشيفرة من أجل ملاحظة الاخطاء، مثالاً على المنقحات Advanced PHP Debugger وXdebug www.mezzey.net.
مُحرّكات القوالب




و هي مجموعه من الدوال تُستخدم بغرض فصل شيفرة HTML عن شيفرة PHP، وأحد أشهر محرّكات القوالب Smarty.
PEAR


و هو مشروع يهدف لكتابة مكتبات باستخدام بي اتش بي، تكون قابله لإعادة الاستخدام، تُكتب مكتبات هذا المشروع دائماً باستخدام البرمجه غرضية التوجه.




الدعم الفني


بي اتش بي لديها دليل يحتوي على توثيق لجميع الدوال التي توفرها، بالإضافه إلى اجابة العديد من الاسئلة يمكن ايجادها بعد عمل بحث بسيط على شبكة الإنترنت، كما أن مستخدمي بي اتش بي يساعدون بعضهم البعض عن طريق برامج الدردشه، المنتديات ومجموعات الاخبار، والعديد من الأماكن متوفره لمساعدة المبرمجين المبتدئين في بي اتش بي.
انتقادات




تُنتقد بي اتش بي لمجموعه من النقاط منها :


* بي اتش بي تستخدم ميزة علامات الاقتباس السحريه (بالإنجليزية: Magic quotes‏) والتي تُحاول تجاهل العلامتين ' و" في النصوص التي تُستخدم في قواعد البيانات من أجل منع ثغرات حقن SQL (بالإنجليزية: SQL Injection‏). هذا يؤدي إلى بعض التشويش حيث لا يتم التفريق بين البيانات التي تُعالجها هذه الميزة من غيرها التي لا تُعالجها.
* بي اتش بي لا تحتوي على دعم حقيقي لـ Unicode.
* بي اتش بي لا تُجبر المبرمج على الإعلان عن المتغير قبل استخدامه، هذا يؤدي إلى اخطاء من نوع E_NOTICE التي تكون مخفيه بشكل افتراضي.
* المكتبات القياسية في بي اتش بي تفقد بعض التنظيم، حيث تحتوي المكتبات على دوال تقوم بنفس الوظائف مع مُعطيات مختلفة واسم مختلف.


ماضي انطلاق الاصدارات الرئيسية
الإصدار تاريخ الانطلاق أهم التعديلات
PHP 1.0 8 يونيو, 1995 كان اسمها رسمياً "Personal Home Page Tools (PHP Tools)". هذا الإصدار هو أول من استخدم اسم PHP.
PHP Version 2 (PHP/FI) 16 أبريل, 1996 كان مبرمجها يعتبرها "اسرع وابسط اداة" لإنشاء المواقع التفاعليه.
PHP 3.0 6 يونيو, 1998 التطوير انتقل من شخص واحد إلى عدّة أشخاص، Zeev Suraski وAndi Gutmans اعادوا كتابة أساس هذا الإصدار.
PHP 4.0 22 مايو, 2000 تم إضافة نظام محترف للتنفيذ اُطلق عليه اسم محرك Zend.
PHP 4.1 10 ديسمبر, 2001 ظهور المصفوفات ($_GET، $_SESSION إلخ).
PHP 4.2 22 أبريل, 2002 إغلاق register_globals افتراضياً.
PHP 4.3 27 ديسمبر, 2002 ظهور واجهة سطر الاوامر.
PHP 4.4 11 يوليو, 2005
PHP 5.0 13 يوليو, 2004 ظهور الإصدار الثاني من محرك Zend
PHP 5.1 25 نوفمبر, 2005
PHP 5.2 2 نوفمبر, 2006 تشغيل مرشّح الاضافات بشكل افتراضي.
PHP 5.3 21 يونيو, 2009 أضافة Namespace وأرجاع أخطاء Undefined للمتغيرات التي لا تحمل قيم.




الإصدار 6 من PHP تحت التطوير منذ يوليو 2007، ويهدف إلى حل بعض عيوب PHP 5.


* دعم حقيقي لـ يونيكود.
* ازالة خاصية علامات الاقتباس السحريه magic_quotes.
* إزالة دوال ereg واعتماد preg بديل عنها. < هذه مكاتب تنحدر عنها عدة دوال ليست داله واحده فقط >
* ازالة المتغيرات HTTP_*_VARS.
* ازالة الخاصيه register_globals.
* ازالة الخاصيه safe_mode.





ليست هناك تعليقات:

إرسال تعليق