PHP

از دانشنامه تخصصی کامپیوتر ایران
پرش به: ناوبری، جستجو

پی‌اچ‌پی (انگلیسی|PHP) که مخفف Hypertext Preprocessor (پیش‌ پردازنده فرامتن)می باشد، یکی از پر طرفدارترین زبان‌های پردازه‌نویسی (اسکریپت‌نویسی) متن باز و رایگان است که بیشتر برای طراحی برنامه‌های سمت سرور در وب‌گاه‌های پویا (دینامیک) مورد استفاده قرار می‌گیرد. پی‌اچ‌پی در سال ۱۹۹۴ توسط رسموس لردورف (Rasmus Lerdorf) ایجاد شد و در طی زمان این زبان برنامه‌سازی، توسط سایر کارشناسان و برنامه‌نویسان تکمیل گردیده و به شکل کنونی آن درآمده‌است.

پی‌اچ‌پی از گونه زبان‌های پردازه‌نویسی تحت وب می باشد. ساختار این زبان بسیار شبیه زبان سی (C) و زبان برنامه‌نویسی پرل (PERL) می‌باشد. شکل پذیری فوق العاده آن و نیز همگونی با اغلب بانک‌های اطلاعاتی از قبیل MySQL قدرت آن را افزایش داده‌است.

مشهورترین نرم‌افزارهای(بسته‌های) ایجاد شده با پی‌اچ‌پی عبارت‌اند از phpBB، SMF، Mambo، Joomla، PHP-Nuke، MyBB و مدیاویکی (MediaWiki) (که این وب‌گاه با آن طراحی شده). پی‌اچ‌پی می‌تواند جایگزینی برای زبان‌های ASP.NET و JSP و PERL باشد. همچنین یکی از بهترین نمونه‌های برنامه‌نویسی PHP در سطح وسیع سایت فیس‌بوک<ref>الگو:یادکرد وب</ref> است.

سادگی استفاده از پی‌اچ‌پی و شباهت آن به زبان سی و پرل (و از نسخه ۵ آن به جاوا) باعث شده که اغلب برنامه نویسان با تجربه در کوتاه‌ترین زمان ممکن برنامه‌های کامل و قدرتمندی را ایجاد کنند.

پی‌اچ‌پی تنها یک زبان پردازه‌نویسی نیست و با استفاده از PHP-GTK می‌توان برای طراحی برنامه‌های با ظاهر گرافیکی (GUI) و همچنین طراحی برنامه‌های خط فرمان شبیه پرل (PERL) یا پایتون (Python) از آن استفاده کرد.

پی‌اچ‌پی امکان استفاده از انواع مختلفی از پایگاه‌های داده را از جمله MySQL، اوراکل، IBM DB2، MsSQL Server،PostgreSQL و SQLite با دستورهایی ساده فراهم می‌سازد.

پی‌اچ‌پی روی بیشتر سیستم‌عامل‌های معروف از جمله لینوکس، یونیکس، ویندوز و Mac OSX و با اغلب کارگزارهای وب (Web Server) معروف، قابل اجراست.

پیشینه[ویرایش]

پی اچ پی در آغاز جایگاه شخصی داشت. در ابتدای سال ۱۹۹۴ عموما مانند زبان برنامه نویسی سی به صورت باینری توسط برنامه‌نویسان دانمارکی/گرینلندی به نام رسموس لردورف نوشته شد. لردروف در اصل این ابزار را ایجاد کرد تا یک مجموعه کوچکی از پردازه (اسکریپت) را جایگزین کند. او سعی می‌کرد که صفحات شخصی را حفظ کند. این ابزار برای این استفاده می‌شد که وظایفی مانند نمایش دادن خلاصه تجربیات و حفظ کردن اینکه چقدر از این صفحه مورد استفاده قرار می‌گیرد را انجام دهد. او این دو را با مفسرش ترکیب کرد تا پی اچ پی /اف آی را ایجاد کند چون بیشتر کاربرد داشت. پی اچ پی/اف آی شامل پیاده سازی برای زبان برنامه نویسی c بود و می‌توانست با پایگاه داده ارتباط یابد. قابلیت ساخت ساده و پویا برای کاربردهای وب. لردروف پی اچ پی رو در ۱۹۹۵ رها کرد تا کد آنرا بهبود ببخشد و اشکالات انرا برطرف کند. این واگذاری به نسخه دوم پی اچ پی منجر شد و هم اکنون استفاده می‌شود. پی اچ پی متشکل از شبیه سازی و دستکاری کردن متغیرها توانایی جاسازی HTML بود. ترکیب آن مانند پرل اما محدود تر ٬ساده تر و پایدار تر بود. زیو سوراسکی و اندی گاتمنز دو توسعه دهنده در فناوری IIT اسرائیلی بودند که پارسر را در سال ۱۹۹۷ دوباره نوشتند و اساس پی اچ پی ۳ را تشکیل دادند با تغییر دادن نام زبان به پی اچ پی بازگشتی: پیش پردازنده مافوق متن. گروه توسعه یافته رسما پی اچ پی /اف آی ۲ را در نوامبر ۱۹۹۷ بعد از دو ماه تجربه و آزمایش منتشر کرد. پس از آن آزمایش عمومی پی اچ پی ۳ آغاز شد و زبان رسمی در ژوئن ۱۹۹۸ تشکیل شد.سوراسکی و گاتمنز گروهی را برای باز نویسی پی اچ پی تشکیل دادند و موتور زند (به انگلیسی: الگو:Lang</span>{{#اگر:|، }}) را در ۱۹۹۹ تولید کردند. آنها همچنین تکنولوژی آن را در اسرائیل تاسیس کردند. در۲۲ ماه مه۲۰۰۰ پی اچ پی ۴ که توسط موتور زند رو به کار آمده بود منتشر شد. در۱۳ ژوئیه ۲۰۰۴ پی اچ پی ۵ که توسط ماشین ۲Zend نیرو گرفته بود منتشر شد. پی اچ پی ۵ دارای ویژگی‌هایی مانند پشتیبانی از زبان شی گرا (برای پایگاه داده) و وسعت بسیار زیاد کارایی آن بود. پی اچ پی ای که اخیرا توسط گروه پی اچ پی منتشر شده نسخه ۴ ان است. در آگوست ۲۰۰۸ این نسخه به ۴٫۴٫۹ توسعه یافت. در سال ۲۰۰۸ پی اچ پی ۵ تنه نسخه استوا و ثابت در دست توسعه بود. پی اچ پی ۶ در کنار پی اچ پی ۵ در دست توسعه‌است. تغییرات عمده آن شامل از بین بردن متغیرهای رجیستری است. پی اچ پی کاملا از یونیکد یا رشته‌های چند بایتی حمایت نکرد. یونیکد در پی اچ پی ۶ پشتیبانی خواهد شد. این نسخه در هر دو محیط ۳۲ و ۶۴ بیتی اجرا خواهد شد.

پیشینه انتشار[ویرایش]

Meaning
قرمز نشر قدیم. حمایت نشد
زرد نشر قدیم. هنوز حمایت نشده
سبز نشر جاری
آبی نشر آینده
۶٫۰
نسخه مهم نسخه مهم تاریخ نشر یادداشت‌ها
۱٫۰ ۱٫۰٫۰ ۱۹۹۵-۰۶-۰۸ این اولین نام کاربردی پی اچ پی بود.

نامیده شد..(PHP Tools) Personal Home Page Tools رسما

"PHP".
۲٫۰ ۲٫۰٫۰ ۱۹۹۶-۰۴-۱۶ توسط سریعترین و ساده ترین ابزار ایجاد شد. برای ایجاد کردن صفحات وب پویا pages.
۳٫۰ ۳٫۰٫۰ ۱۹۹۸-۰۶-۰۶ توسعه آن از یک نفر به چند نفر تغییر کرد. زیو سوراسکی و اندی گاتمنز دوباره اساس این نسخه را نوشتند.
۴٫۰ ۴٫۰٫۰ ۲۰۰۰-۰۵-۲۲ سیستم تجزیه/اجرا در دو مرحله تحت عنوان موتور زند اضافه شد.<ref name="php4changelog">الگو:یادکرد Retrieved on 2008-02-22. </ref>
۴٫۱٫۰ ۲۰۰۱-۱۲-۱۰ ($_GET, $_POST, $_SESSION)

متغیرهای بسیار خوبی معرفی شدند.

etc.)<ref name="php4changelog" />
۴٫۲٫۰ ۲۰۰۲-۰۴-۲۲متغیرهای بدون استفاده با پیش فرض.holes in applications.<ref name="php4changelog" />
۴٫۳٫۰ ۲۰۰۲-۱۲-۲۷ علاوه بر CLI٬CGI نیز معرفی شد..<ref name="php4changelog" />
۴٫۴٫۰ ۲۰۰۵-۰۷-۱۱ صفحات مهمی برای اسکریپت phpsize و config-php اضافه شد..<ref name="php4changelog" />
۴٫۴٫۸ ۲۰۰۸-۰۱-۰۳ چند پیشرفت ایمنی. منتشر شدن پی اچ پی ۴..<ref>PHP: PHP ۴٫۴٫۸ Release Announcement</ref>
۴٫۴٫۹ ۲۰۰۸-۰۸-۰۷ پیشرفت بیشتر و انتشار نسخه پی اچ پی ۴٫۴..<ref>PHP: Downloads</ref><ref>PHP: PHP ۴٫۴٫۹ Release Announcement</ref>
۵٫۰ ۵٫۰٫۰ ۲۰۰۴-۰۷-۱۳ ماشین ۲zend با امکان مدل شی گرایی..<ref name="php5changelog">الگو:یادکرد Retrieved on 2008-02-22. </ref>
۵٫۲٫۰ ۲۰۰۶-۱۱-۰۲ گسترش فیلتر با پیش فرض.<ref name="php5changelog" />
۶٫۰٫۰ No date set

پشتیبانی از یونیکد یامتغیرهای رجیستری. support<ref>Personal homepage of Jeroen van der Meer</ref>

کاربرد[ویرایش]

پی اچ پی یک زبان اسکریپت‌نویسی برای وب است. پی اچ پی عمدتا بر روی سرور وب اجرا می‌شود. پی اچ پی عمدتا مانند یک فیلتر عمل می‌کند، کد برنامه را به عنوان ورودی می‌گیرد و صفحات وب را به عنوان خروجی (غالبا از نوع اچ تی ام ال) ایجاد می‌کند. همچنین می‌تواند برای اسکریپت کردن خط فرمان استفاده شود. پی اچ پی می‌تواند بر روی صفحات وب و سیستم‌های عامل و یا پایگاه‌های داده مستقر شود. همچنین می‌تواند به عنوان سیستم مدیریتی پایگاه داده استفاده شود. پی اچ پی رایگان بوده و گروه پی اچ پی منبع کاملی از کد آن را در اختیار کاربران قرار می‌دهد. همچنین می‌توان از آن برای کاربردهای شخصی استفاده کرد. این زبان می‌تواند کد باینری را برای موتور زند تولید کند. از پی اچ پی عمدتا در طراحی وب استفاده می‌شود.

میزان بهینه سازی[ویرایش]

همزمان با اسکریپت کردن زبانها٬ساختار الگو گونه برای نمایش ترتیب حوادث PHP به طور طبیعی به صورت کد مرجع خوانا برای تولید سرورهای وب نگه داری می‌شود. بنابر این ساختار الگوگونه برای PHP در زمان اجرا توسط ماشین PHP کامپایل خواهد شد. کامپایل کردن در زمان اجرا دفعات اجرای فایل آغاز گر را افزایش می‌دهد. چون یک مرحله اضافه به زمان اجرا می‌افزاید. ساختار الگوگونه PHP می‌تواند قبل از زمان اجرا توسط مترجم‌هایی درست شبیه زبانهای برنامه نویسی همچون C ترجمه شود.(زبان برنامه سازی PHP برنامه دار است تا جائیکه برای تمدید کردن آن استفاده شود.) کد می‌تواند کیفیت کد کامپایل شده را با کم کردن اندازه آن و ایجاد کردن تغییراتی که بتواند زمان اجرا را کاهش دهد و کارایی را بهبود ببخشد بالا ببرد و بهینه نماید. نوع کامپایلر PHP آنچنان است که اغلب فرصت برای بهینه سازی کد آن وجود دارد. به طور مثال می‌توان برای بهینه سازی کد بهینه ساز Zend را نام برد. شتابگر PHP می‌تواند سطح کارایی را با ذخیره کردن نوع کامپایل شده‌ای از ساختار PHP در حافظه تسهیم شده بالا ببرد تا از هزینه‌های تجزیه و کامپایل کد در زمان اجرا جلوگیری شود. ایمنی: میزان ناامنی نرم‌افزار نوشتاری PHP که توسط نرم‌افزارهای رایج دیگر در معرض آسیب پذیری است به این صورت می‌باشد: ۱۲ درصد در سال۲۰۰۳، ۲۰ در صد در سال ۲۰۰۴، ۲۸ در صد در سال ۲۰۰۵، ۴۳ در صد در سال ۲۰۰۶، ۳۶ در صد در سال۲۰۰۷، و ۳۳ در صد در بخشی از سال ۲۰۰۸، بیشتر از یک سوم آسیب پذیری نرم‌افزار PHP به تازگی صورت گرفته. اغلب آسیب‌ها با پیروی نکردن از قوانین برنامه نویسی ایجاد می‌شود و این آسیب‌ها مرتبط با نسخه قدیمی PHP است. یکی از مهمترین این نا امنی‌ها متغیرهای رجیستری هستند که از سال ۲۰۰۲در PHP نسخه ۴٫۲ بدون استفاده شده‌اند.

ترکیب[ویرایش]

یک برنامهٔ PHP می‌تواند قسمتی از یک برنامهٔ HTML باشد.PHP کد را بدون تعیین حدود کردن تجزیه می‌کند. هر چیزی خارج از این محدوده به طور مستقیم به خروجی فرستاده می‌شود و توسط PHP تعیین نمی‌شوند. حدود رایج و مشترک <? و php?> است که به ترتیب بسته کردن و باز کردن می‌باشد. علائم کوتاه می‌تواند برای شروع کد به کار روند: =?> یا ?> و علامتی که برای پایان کد به کار می‌رود:<? این علائم به طور رایج استفاده می‌شود. اما علائمی مانند <% و =% > یا %> کمتر مورد استفاده قرا می‌گیرند. به همین خاطر استفاده ازعلائم کوتاه و ASP کم شده‌است. هدف از این‌ها جدا کردن PHP و HTML می‌باشد. متغیر‌هایی که قبل از آن‌ها علامت $ به کار می‌رود لازم نیست مشخص شوند. بر خلاف نامها و توابع کلاس نام متغیرها به کوچک و بزرگ بودن حروف حساس است.PHP در حالت زبان form free با خط جدید و فاصله سرو کار دارد(به جز در رشته‌ها) و جمله‌ها با سمی کالن تمام می‌شوند.PHP دارای سه نوع روش برای توضیحات می‌باشد. از/* */ و // برای توضیحات استفاده می‌شود. همچنین از # برای توضیحات کوتاه استفاده می‌شود. PHP در واژگان مانند زبانهای سطح بالا همچون C است.if شرطی- حلقه‌های while و for و توابع بازگشتی شبیه به زبان C و ++C است.

شیوه کار برنامه[ویرایش]

یک برنامهٔ پی‌اچ‌پی می‌تواند قسمتی از یک برنامهٔ اچ‌تی‌ام‌ال (HTML) باشد. مثلاً در برنامهٔ زیر تنها <source lang="php"><?php echo 'Hello world!'; ?></source> به زبان پی‌اچ‌پی است و بقیهٔ برنامه به زبان HTML نوشته شده‌است. برای جداسازی برنامهٔ پی‌اچ‌پی و برنامهٔ اچ‌تی‌ام‌ال باید قسمت پی‌اچ‌پی را بین php?> و <? قرار داد. لازم به ذکر است که بجای تگ آغاز که همانا php?> است، می‌توان از حالت خلاصه شده آن که به صورت ?> است استفاده نمود، منتها این کار استاندارد نبوده و بستگی به تنظیمات هنگام نصب php دارد. بنابر این توصیه می‌شود که از همان حالت کامل استفاده شود.

<source lang="php">

<html>
  <head>
   <title>Azmayesh</title>
  </head>
 
  <body>
   <?php echo 'Hello world!'; ?>
  </body>
</html>

</source>

با صدا زدن صفحه‌ای با متن بالا از سرور به‌وسیله مرورگر در صفحه '!Hello world' را می‌بینیم.

نوع داده[ویرایش]

PHP همه متغیرها را در یک محدوده مستقل ذخیره می‌کند. این محدوده به طور نمونه ۳۲ بیت اعداد علامتدار است. اعداد بدون علامت در حالتهای معینی به مقادیر علامتدار تبدیل می‌شوند: این رفتار در زبانهای برنامه نویسی متفاوت است. متغیرهای صحیح می‌توانند به صورت دهدهی(مثبت یا منفی) ٬هشت هشتی و شانزده شانزدهی مشخص شوند.

اعداد واقعی نیز در محدوده معینی ذخیره می‌شوند. آنها می‌توانند به دو صورت اعشاری و علمی استفاده شوند.PHP دارای نوع محلی به نام بولین می‌باشد که شبیه به بولین در زبان جاوا و ++C است. در نوع داده بولین مقدار غیر صفر به عنوان درست و مقدار صفر به عنوان نادرست استفاده می‌شود. همانطور که در پرل و ++C نیز همین طور است.

نوع داده null برای متغیرهایی که هیچ مقداری ندارند استفاده می‌شود. متغیرهایی با نوع مرجع به منابع خارجی اشاره می‌کنند. اینها نوعا توسط توابع ایجاد می‌شوند و تنها می‌توانند با همان تابع مورد استفاده قرار گیرند. مانند پوشه‌ها و عکسها و پایگاه داده.PHP آرایه‌ها و رشته‌ها را هم حمایت می‌کند.
کتابخانه استانداردPHP(SPL) به منظور حل مسائل استاندارد و دسترسی به داده‌های موثر و کلاس‌ها به کار می‌رود.

۵٫۲ و قدیمی تر:

توابع بهترین توابع نیستند و تنها می‌توانند با نامشان صدا زده شوند. توابع تعریف شده توسط کاربر می‌توانند بیرون از نمونه اولیه ایجاد شوند. توابع می‌توانند در درون بلوک‌ها تعریف شوند. توابع فراخوانی شده باید از پرانتز استفاده کنند. به جز آرگومان zero توابع سازنده کلاس با اپراتور new فراخوانده می‌شوند. در اینجا پرانتزها اختیاری هستند. PHP توابع بی نام را که توسط دستور function_ creat ایجاد می‌شوند را هم پشتیبانی می‌کند. اگر چه درست نیستند چون توابع بی نام از اسم بر خوردار نیستند و توابع تنها می‌توانند توسط نامشان صدا زده شوند. ۵٫۳ وجدیدتر:

PHP از توابع درجه اول و توابع بی نام حمایت می‌کند که توسط ساختار زیر پشتیبانی می‌شوند: <source lang="php"> function getAdder($x) { return function ($y) use ($x) { return ($x + $y); }; } </source> در اینجا تابع()getAdder یک پارامتر x$ ایجاد می‌کند که آرگومان y$ اضافی را می‌گیرد و آنرا به صدا زننده بر می‌گرداند.

اشیا[ویرایش]

برنامه نویسی شی گرا به 4PHP اضافه شد. اشیا در5 PHP به طور کامل دوباره نوشته می‌شود. در نسخه قبلی PHP اشیا مانند تایپ‌های اولیه به کار برده می‌شوند. اشکال این روش این بود که وقتی یک متغیر تعریف می‌شود تمام اشیا کپی می‌شوند. در روش جدید اشیا با handle بازگشت داده می‌شوند نه با مقدار.5PHP متغیرهای عضو خصوصی و حفاظت شده تعریف می‌کند. همچنین یک روش استاندارد برای معرفی سازنده و مخرب همانند زبان برنامه سازی ++C تعریف می‌کند. interfraceهای خاصی وجود دارد که به اشیا اجازه می‌دهد بر روی زمان اجرا اثر بگذارد. اگر توسعه دهنده یک کپی از یک شی با استفاده از کلمه محفوظ clone ایجاد کند موتور زند آنرا بررسی خواهد کرد که آیا روشی برای آن تعریف شده یا نه. اگر نشده بود یک clone پیش فرض را صدا خواهد زد که ویژگی‌های آن شی را کپی می‌کند. اگر تعریف شده بود برای ویژگی‌های لازم اشیا ایجاد شده معتبر است. برای سادگی ماشین تابعی را تولید می‌کند که مشخصات شی مرجع را وارد می‌کند که برنامه نویس می‌تواند با یک مقدار مشابه شی مرجع آغاز به کار کند و تنها ویژگی‌هایی را که نیاز دارد تغییر دهد.

روش نصب پی اچ پی[ویرایش]

شما برای کار با پی اچ پی نیاز به یک سرور مجازی دارید که می‌توانید از IIS یا Apache استفاده کنید که ما آپاچی را توصیه می‌کنیم. همچنین به یک پایگاه داده نیاز دارید که برای این کار mysql بهترین گزینه‌است.

شما می‌توانید با نصب Wampserver به راحتی همه این گزینه‌ها را یکجا داشته باشید. Wampserver یک نرم‌افزار رایگان است که با نصب آپاچی، پی اپ پی، مای اسکیو ال و پی اچ پی مای ادمین شما را از نصب تک تک این برنامه‌ها آسوده می‌کند. Wampserver را می‌توانید از اینجا دانلود کنید.

آسانی[ویرایش]

به گفته بیشتر برنامه نویسان وب، پی اچ پی یک زبان تحت وب ساده به شمار می‌رود، زیرا نیاز به یادگیری هیچ پیش نیازی نیست، همچنین پی اچ پی، به زبان‌های دیگری وابسته نیست. اغلب دستورات آن مشابه زبانهای محاوره‌ای بوده و یادگیری آن ساده‌است. از ساختارهای دستوری پیچیده اثری در HTML دیده نمی‌شود.

جستارهای وابسته[ویرایش]

منابع[ویرایش]