persian.developer
February 5th, 2010, 22:59
پیاچپی (PHP) یکی از پر طرفدارترین زبانهای پردازهنویسی (اسکریپتینگ) متن باز (Open Source) است که بیشتر برای طراحی برنامههای سمت سرور در وبگاههای پویا (Dynamic) مورد استفاده قرار میگیرد. PHP مخفف PHP: Hypertext Preprocessor (پیشپردازنده فرامتن) میباشد. پیاچپی در سال ۱۹۹۴ ایجاد شد. رسموس لردورف (Rasmus Lerdorf) ایجاد کننده اولیه آن بوده است ولی در طی زمان این زبان برنامهسازی، توسط سایر کارشناسان و برنامهنویسان تکمیل گردیده و به شکل کنونی آن درآمدهاست.
پیاچپی از زبانهای پردازهنویسی تحت وب است. ساختار این زبان بسیار شبیه زبان سی (C) و زبان برنامهنویسی پرل (Perl) میباشد. شکل پذیری فوق العاده آن و نیز همگونی با اغلب بانکهای اطلاعاتی از قبیل MySql قدرت آن را افزایش داده است.
مشهورترین نرمافزارهای(بسته های) ایجاد شده با پیاچپی عبارتاند از phpBB و SMF و Mambo و Joomla و PHPNukeو mybbو مدیاویکی (MediaWiki) (که این وبگاه با آن طراحی شده). پیاچپی میتواند جایگزینی برای زبانهای ASP.NET و JSP و Perl باشد.
سادگی استفاده از پیاچپی و شباهت آن به زبان سی و پرل (و از نسخه ۵ آن به جاوا) باعث شده که اغلب برنامه نویسان با تجربه در کوتاهترین زمان ممکن برنامههای کاملی را ایجاد کنند.
پیاچپی تنها یک زبان پردازهنویسی نیست و با استفاده از PHP-GTK میتوان برای طراحی برنامههای با ظاهر گرافیکی (GUI) و همچنین طراحی برنامههای خط فرمان شبیه پرل یا پایتون (Python) از آن استفاده کرد.
پیاچپی امکان استفاده از انواع مختلفی از پایگاههای داده را از جمله MySQL، اوراکل، IBM DB۲ ،Microsoft SQL Server ،PostgreSQL و SQLite با دستورهایی ساده فراهم میسازد.
پیاچپی روی بیشتر سیستم عاملهای معروف از جمله لینوکس، یونیکس، ویندوز و Mac OSX و با اغلب کارگزارهای وب (Web Server) معروف، قابل اجراست.
پی اچ پی یک تاریخچهاست
پی اچ پی در آغاز جایگاه شخصی داشت.در ابتدای سال ۱۹۹۴ عموما ماند زبان برنامه نویسی سی به صورت باینری توسط برنامهنویسان دانمارکی/گرینلندی به نام رسموس لردورف نوشته شد.لردروف در اصل این ابزار را ایجاد کرد تا یک مجموعه کوچکی از پردازه (اسکریپت) را جایگزین کند.او سعی میکرد که صفحات شخصی را حفظ کند. این ابزار برای این استفاده میشد که وظایفی مانند نمایش دادن خلاصه تجربیات و حفظ کردن اینکه چقدر از این صفحه مورد استفاده قرار میگیرد را انجام دهد. او این دو را با مفسرش ترکیب کرد تا پی اچ پی /اف آی را ایجاد کند چون بیشتر کاربرد داشت.پی اچ پی/اف آی شامل پیاده سازی برای زبان برنامه نویسی c بود و میتوانست با پایگاه داده ارتباط یابد.قابلیت ساخت ساده و پویا برای کاربردهای وب .لردروف پی اچ پی رو در ۱۹۹۵ رها کرد تا کد آنرا بهبود ببخشد و اشکالات انرا برطرف کند.این واگذاری به نسخه دوم پی اچ پی منجر شد و هم اکنون استفاده میشود. پی اچ پی متشکل از شبیه سازی و دستکاری کردن متغیرها توانایی جاسازی HTML بود.ترکیب آن مانند پرل اما محدود تر ٬ساده تر و پایدار تر بود. زیو سوراسکی و اندی گاتمنز دو توسعه دهنده در فناوری IIT اسرائیلی بودند که پارسر را در سال ۱۹۹۷ دوباره نوشتند و اساس پی اچ پی ۳ را تشکیل دادند با تغییر دادن نام زبان به پی اچ پی بازگشتی : پیش پردازنده مافوق متن. گروه توسعه یافته رسما پی اچ پی /اف آی ۲ را در نوامبر ۱۹۹۷ بعد از دو ماه تجربه و آزمایش منتشر کرد. پس از آن آزمایش عمومی پی اچ پی ۳ آغاز شد و زبان رسمی در ژوئن ۱۹۹۸ تشکیل شد.سوراسکی و گاتمنز گروهی را برای باز نویسی پی اچ پی تشکیل دادند و ماشین Zend را در ۱۹۹۹ تولید کردند.آنها همچنین تکنولوژی آن را در اسرائیل تاسیس کردند. در۲۲ ماه مه۲۰۰۰ پی اچ پی ۴ که توسط ماشین Zend رو به کار آمده بود منتشر شد.در۱۳ ژوئیه ۲۰۰۴ پی اچ پی ۵ که توسط ماشین ۲Zend نیرو گرفته بود منتشر شد.پی اچ پی ۵ دارای ویژگیهایی مانند پشتیبانی از زبان شی گرا (برای پایگاه داده) و وسعت بسیار زیاد کارایی آن بود. پی اچ پی ای که اخیرا توسط گروه پی اچ پی منتشر شده نسخه ۴ ان است. در آگوست ۲۰۰۸ این نسخه به ۴٫۴.۹ توسعه یافت. در سال ۲۰۰۸ پی اچ پی ۵ تنه نسخه استوا و ثابت در دست توسعه بود .پی اچ پی ۶ در کنار پی اچ پی ۵ در دست توسعهاست. تغییرات عمده آن شامل از بین بردن متغیرهای رجیستری است. پی اچ پی کاملا از یونیکد یا رشتههای چند بایتی حمایت نکرد.یونیکد در پی اچ پی ۶ پشتیبانی خواهد شد. این نسخه در هر دو محیط ۳۲ و ۶۴ بیتی اجرا خواهد شد.
کاربرد:
پی اچ پی یک زبان اسکریپتنویسی برای وب است.پی اچ پی عمدتا برروی سرور وب اجرا میشود. پی اچ پی کد برنامه را به عنوان ورودی میگیرد و صفحات وب را به عنوان خروجی ایجاد میکند. همچنین میتواند برای اسکریپت کردن خط فرمان استفاده شود.پی اچ پی میتواند بر روی صفحات وب و سیستم های عامل و یا پایگاههای داده مستقر شود. همچنین میتواند به عنوان سیستم مدیریتی پایگاه داده استفاده شود.پی اچ پی رایگان هست و گروه پی اچ پی منبع کاملی از کد آن را در اختیار کاربران قرار میدهد.همچنین میتوان از آن برای کاربرد های شخصی استفاده کرد. پی اچ پی عمدتا مانند یک فیلتر عمل میکند.به این صورت که ورودی را به صورت متن یا دستور العمل های پی اچ پی میگیرد و خروجی را تولید میکند.خروجی آن غالبا از نوع اچ تی ام ال میباشد.این زبان میتواند کد باینری را برای ماشین زند تولید کند. از پی اچ پی عمدتا در طراحی وب استفاده میشود.
میزان بهینه سازی:
همزمان با اسکریپت کردن زبانها٬ساختار الگو گونه برای نمایش ترتیب حوادث PHP به طور طبیعی به صورت کد مرجع خوانا برای تولید سرورهای وب نگه داری میشود . بنابر این ساختار الگوگونه برای PHP در زمان اجرا توسط ماشین PHP کامپایل خواهد شد.کامپایل کردن در زمان اجرا دفعات اجرای فایل آغاز گر را افزایش میدهد.چون یک مرحله اضافه به زمان اجرا می افزاید. ساختار الگوگونه PHP میتواند قبل از زمان اجرا توسط مترجم هایی درست شبیه زبانهای برنامه نویسی همچون C ترجمه شود.( زبان برنامه سازی PHP برنامه دار است تا جائیکه برای تمدید کردن آن استفاده شود.) کد میتواند کیفیت کد کامپایل شده را با کم کردن اندازه آن و ایجاد کردن تغییراتی که بتواند زمان اجرا را کاهش دهد و کارایی را بهبود ببخشد بالا ببرد و بهینه نماید. نوع کامپایلر PHP آنچنان است که اغلب فرصت برای بهینه سازی کد آن وجود دارد.به طور مثال میتوان برای بهینه سازی کد بهینه ساز Zend را نام برد. شتابگر PHP میتواند سطح کارایی را با ذخیره کردن نوع کامپایل شدهای از ساختار PHP در حافظه تسهیم شده بالا ببرد تا از هزینههای تجزیه و کامپایل کد در زمان اجرا جلوگیری شود. ایمنی: میزان ناامنی نرم افزار نوشتاری PHP که توسط نرم افزار های رایج دیگر در معرض آسیب پذیری است به این صورت میباشد: 12 درصد در سال2003 20 در صد در سال 2004 28 در صد در سال 2005 43 در صد در سال 2006 36 در صد در سال2007 و 33 در صد در بخشی از سال 2008 بیشتر از یک سوم آسیب پذیری نرم افزار PHP به تازگی صورت گرفته .اغلب آسیب ها با پیروی نکردن از قوانین برنامه نویسی ایجاد میشود و این آسیب ها مرتبط با نسخه قدیمی PHP است. یکی از مهمترین این نا امنی ها متغیر های رجیستری هستند که از سال 2002در PHP نسخه 4.2 بدون استفاده شده اند.
ترکیب:
یک برنامهٔ PHP میتواند قسمتی از یک برنامهٔ HTML باشد.PHP کد را بدون تعیین حدود کردن تجزیه میکند.هر چیزی خارج از این محدوده به طور مستقیم به خروجی فرستاده میشود و توسط PHP تعیین نمیشوند.حدود رایج و مشترک <? و php?> است که به ترتیب بسته کردن و باز کردن میباشد. علائم کوتاه میتواند برای شروع کد به کار روند: =?> یا ?> و علامتی که برای پایان کد به کار میرود:<? این علائم به طور رایج استفاده میشود.اما علائمی مانند <% و =% > یا %> کمتر مورد استفاده قرا میگیرند. به همین خاطر استفاده ازعلائم کوتاه و ASP کم شده است. هدف از این ها جدا کردن PHP و HTML میباشد. متغیر هایی که قبل از آن ها علامت $ به کار میرود لازم نیست مشخص شوند .بر خلاف نامها و توابع کلاس نام متغیر ها به کوچک و بزرگ بودن حروف حساس است.PHP در حالت زبان form free با خط جدید و فاصله سرو کار دارد( به جز در رشته ها) و جملهها با سمی کالن تمام میشوند.PHP دارای سه نوع روش برای توضیحات میباشد.از/* */ و // برای توضیحات استفاده میشود.همچنین از # برای توضیحات کوتاه استفاده میشود. PHP در واژگان مانند زبانهای سطح بالا همچون C است.if شرطی- حلقههای while و for و توابع بازگشتی شبیه به زبان C و ++C است.
شیوه کار برنامه
یک برنامهٔ پیاچپی میتواند قسمتی از یک برنامهٔ اچتیامال (HTML) باشد. مثلاً در برنامهٔ زیر تنها
<?php echo"salaam php!" ?>
به زبان پیاچپی است و بقیهٔ برنامه به زبان HTML نوشته شده است. برای جداسازی برنامهٔ پیاچپی و برنامهٔ اچتیامال باید قسمت پیاچپی را بین php?> و <? قرار داد. لازم به ذکر است که بجای تگ آغاز که همانا php?> است، میتوان از حالت خلاصه شده آن که به صورت ?> است استفاده نمود، منتها این کار استاندارد نبوده و بستگی به تنظیمات هنگام نصب php دارد. بنابر این توصیه میشود که از همان حالت کامل استفاده شود.
<code>
<pre>
<html>
<head>
<title>Nomoone</title>
</head>
<body>
<?php echo "Salam PHP"; ?>
</body>
</html>
</pre>
</code>
با صدا زدن صفحهای با متن بالا از سرور بهوسیله مرورگر در صفحه "Salam PHP" را میبینیم.
نوع داده:
PHP همه متغیرها را در یک محدوده مستقل ذخیره میکند .این محدوده به طور نمونه 32 بیت اعداد علامتدار است. اعداد بدون علامت در حالتهای معینی به مقادیر علامتدار تبدیل میشوند: این رفتار در زبانهای برنامه نویسی متفاوت است.متغیرهای صحیح میتوانند به صورت دهدهی(مثبت یا منفی) ٬هشت هشتی و شانزده شانزدهی مشخص شوند.
اعداد واقعی نیز در محدوده معینی ذخیره میشوند.آنها میتوانند به دو صورت اعشاری و علمی استفاده شوند.PHP دارای نوع محلی به نام بولین میباشد که شبیه به بولین در زبان جاوا و ++C است.در نوع داده بولین مقدار غیر صفر به عنوان درست و مقدار صفر به عنوان نادرست استفاده میشود.همانطور که در پرل و ++C نیز همین طور است.
نوع داده null برای متغیرهایی که هیچ مقداری ندارند استفاده میشود.متغیرهایی با نوع مرجع به منابع خارجی اشاره میکنند.اینها نوعا توسط توابع ایجاد میشوند و تنها میتوانند با همان تابع مورد استفاده قرار گیرند.مانند پوشهها و عکسها و پایگاه داده.PHP آرایهها و رشتهها را هم حمایت میکند.
کتابخانه استانداردPHP(SPL) به منظور حل مسائل استاندارد و دسترسی به دادههای موثر و کلاسها به کار میرود.
5.2 و قدیمی تر :
توابع بهترین توابع نیستند و تنها میتوانند با نامشان صدا زده شوند.توابع تعریف شده توسط کاربر میتوانند بیرون از نمونه اولیه ایجاد شوند.توابع میتوانند در درون بلوکها تعریف شوند.توابع فراخوانی شده باید از پرانتز استفاده کنند.به جز آرگومان zero توابع سازنده کلاس با اپراتور new فراخوانده میشوند.در اینجا پرانتزها اختیاری هستند.PHP توابع بی نام را که توسط دستور function_ creat ایجاد میشوند را هم پشتیبانی میکند.اگر چه درست نیستند چون توابع بی نام از اسم بر خوردار نیستند و توابع تنها میتئانند توسط نامشان صدا زده شوند. 5.3 وجدیدتر:
PHP از توابع درجه اول و توابع بی نام حمایت میکند که توسط ساختار زیر پشتیبانی میشوند:
function getAdder($x)
{
Return function ($y) use ($x) {
return $x + $y;
};
}
در اینجا تابع( )getAdder یک پارامتر x$ ایجاد میکند که آرگومان y$ اضافی را میگیرد و آنرا به صدا زننده بر میگرداند.
اشیا:
برنامه نویسی شی گرا به 4PHP اضافه شد. اشیا در5 PHP به طور کامل دوباره نوشته میشود.در نسخه قبلی PHP اشیا مانند تایپ های اولیه به کار برده میشوند.اشکال این روش این بود که وقتی یک متغیر تعریف میشود تمام اشیا کپی میشوند.در روش جدید اشیا با handle بازگشت داده میشوند نه با مقدار.5PHP متغیر های عضو خصوصی و حفاظت شده تعریف میکند.همچنین یک روش استاندارد برای معرفی سازنده و مخرب همانند زبان برنامه سازی ++C تعریف میکند. interfrace های خاصی وجود دارد که به اشیا اجازه میدهد بر روی زمان اجرا اثر بگذارد.اگر توسعه دهنده یک کپی از یک شی با استفاده از کلمه محفوظ clone ایجاد کند ماشین zendآنرا بررسی خواهد کرد که آیا روشی برای آن تعریف شده یا نه.اگر نشده بود یک clone پیش فرض را صدا خواهد زد که ویژگی های آن شی را کپی میکند.اگر تعریف شده بود برای ویژگی های لازم اشیا ایجاد شده معتبر است.برای سادگی ماشین تابعی را تولید میکند که مشخصات شی مرجع را وارد میکند که برنامه نویس میتواند با یک مقدار مشابه شی مرجع آغاز به کار کند و تنها ویژگی هایی را که نیاز دارد تغییر دهد.
منبع: ویکی پدیا
پیاچپی از زبانهای پردازهنویسی تحت وب است. ساختار این زبان بسیار شبیه زبان سی (C) و زبان برنامهنویسی پرل (Perl) میباشد. شکل پذیری فوق العاده آن و نیز همگونی با اغلب بانکهای اطلاعاتی از قبیل MySql قدرت آن را افزایش داده است.
مشهورترین نرمافزارهای(بسته های) ایجاد شده با پیاچپی عبارتاند از phpBB و SMF و Mambo و Joomla و PHPNukeو mybbو مدیاویکی (MediaWiki) (که این وبگاه با آن طراحی شده). پیاچپی میتواند جایگزینی برای زبانهای ASP.NET و JSP و Perl باشد.
سادگی استفاده از پیاچپی و شباهت آن به زبان سی و پرل (و از نسخه ۵ آن به جاوا) باعث شده که اغلب برنامه نویسان با تجربه در کوتاهترین زمان ممکن برنامههای کاملی را ایجاد کنند.
پیاچپی تنها یک زبان پردازهنویسی نیست و با استفاده از PHP-GTK میتوان برای طراحی برنامههای با ظاهر گرافیکی (GUI) و همچنین طراحی برنامههای خط فرمان شبیه پرل یا پایتون (Python) از آن استفاده کرد.
پیاچپی امکان استفاده از انواع مختلفی از پایگاههای داده را از جمله MySQL، اوراکل، IBM DB۲ ،Microsoft SQL Server ،PostgreSQL و SQLite با دستورهایی ساده فراهم میسازد.
پیاچپی روی بیشتر سیستم عاملهای معروف از جمله لینوکس، یونیکس، ویندوز و Mac OSX و با اغلب کارگزارهای وب (Web Server) معروف، قابل اجراست.
پی اچ پی یک تاریخچهاست
پی اچ پی در آغاز جایگاه شخصی داشت.در ابتدای سال ۱۹۹۴ عموما ماند زبان برنامه نویسی سی به صورت باینری توسط برنامهنویسان دانمارکی/گرینلندی به نام رسموس لردورف نوشته شد.لردروف در اصل این ابزار را ایجاد کرد تا یک مجموعه کوچکی از پردازه (اسکریپت) را جایگزین کند.او سعی میکرد که صفحات شخصی را حفظ کند. این ابزار برای این استفاده میشد که وظایفی مانند نمایش دادن خلاصه تجربیات و حفظ کردن اینکه چقدر از این صفحه مورد استفاده قرار میگیرد را انجام دهد. او این دو را با مفسرش ترکیب کرد تا پی اچ پی /اف آی را ایجاد کند چون بیشتر کاربرد داشت.پی اچ پی/اف آی شامل پیاده سازی برای زبان برنامه نویسی c بود و میتوانست با پایگاه داده ارتباط یابد.قابلیت ساخت ساده و پویا برای کاربردهای وب .لردروف پی اچ پی رو در ۱۹۹۵ رها کرد تا کد آنرا بهبود ببخشد و اشکالات انرا برطرف کند.این واگذاری به نسخه دوم پی اچ پی منجر شد و هم اکنون استفاده میشود. پی اچ پی متشکل از شبیه سازی و دستکاری کردن متغیرها توانایی جاسازی HTML بود.ترکیب آن مانند پرل اما محدود تر ٬ساده تر و پایدار تر بود. زیو سوراسکی و اندی گاتمنز دو توسعه دهنده در فناوری IIT اسرائیلی بودند که پارسر را در سال ۱۹۹۷ دوباره نوشتند و اساس پی اچ پی ۳ را تشکیل دادند با تغییر دادن نام زبان به پی اچ پی بازگشتی : پیش پردازنده مافوق متن. گروه توسعه یافته رسما پی اچ پی /اف آی ۲ را در نوامبر ۱۹۹۷ بعد از دو ماه تجربه و آزمایش منتشر کرد. پس از آن آزمایش عمومی پی اچ پی ۳ آغاز شد و زبان رسمی در ژوئن ۱۹۹۸ تشکیل شد.سوراسکی و گاتمنز گروهی را برای باز نویسی پی اچ پی تشکیل دادند و ماشین Zend را در ۱۹۹۹ تولید کردند.آنها همچنین تکنولوژی آن را در اسرائیل تاسیس کردند. در۲۲ ماه مه۲۰۰۰ پی اچ پی ۴ که توسط ماشین Zend رو به کار آمده بود منتشر شد.در۱۳ ژوئیه ۲۰۰۴ پی اچ پی ۵ که توسط ماشین ۲Zend نیرو گرفته بود منتشر شد.پی اچ پی ۵ دارای ویژگیهایی مانند پشتیبانی از زبان شی گرا (برای پایگاه داده) و وسعت بسیار زیاد کارایی آن بود. پی اچ پی ای که اخیرا توسط گروه پی اچ پی منتشر شده نسخه ۴ ان است. در آگوست ۲۰۰۸ این نسخه به ۴٫۴.۹ توسعه یافت. در سال ۲۰۰۸ پی اچ پی ۵ تنه نسخه استوا و ثابت در دست توسعه بود .پی اچ پی ۶ در کنار پی اچ پی ۵ در دست توسعهاست. تغییرات عمده آن شامل از بین بردن متغیرهای رجیستری است. پی اچ پی کاملا از یونیکد یا رشتههای چند بایتی حمایت نکرد.یونیکد در پی اچ پی ۶ پشتیبانی خواهد شد. این نسخه در هر دو محیط ۳۲ و ۶۴ بیتی اجرا خواهد شد.
کاربرد:
پی اچ پی یک زبان اسکریپتنویسی برای وب است.پی اچ پی عمدتا برروی سرور وب اجرا میشود. پی اچ پی کد برنامه را به عنوان ورودی میگیرد و صفحات وب را به عنوان خروجی ایجاد میکند. همچنین میتواند برای اسکریپت کردن خط فرمان استفاده شود.پی اچ پی میتواند بر روی صفحات وب و سیستم های عامل و یا پایگاههای داده مستقر شود. همچنین میتواند به عنوان سیستم مدیریتی پایگاه داده استفاده شود.پی اچ پی رایگان هست و گروه پی اچ پی منبع کاملی از کد آن را در اختیار کاربران قرار میدهد.همچنین میتوان از آن برای کاربرد های شخصی استفاده کرد. پی اچ پی عمدتا مانند یک فیلتر عمل میکند.به این صورت که ورودی را به صورت متن یا دستور العمل های پی اچ پی میگیرد و خروجی را تولید میکند.خروجی آن غالبا از نوع اچ تی ام ال میباشد.این زبان میتواند کد باینری را برای ماشین زند تولید کند. از پی اچ پی عمدتا در طراحی وب استفاده میشود.
میزان بهینه سازی:
همزمان با اسکریپت کردن زبانها٬ساختار الگو گونه برای نمایش ترتیب حوادث PHP به طور طبیعی به صورت کد مرجع خوانا برای تولید سرورهای وب نگه داری میشود . بنابر این ساختار الگوگونه برای PHP در زمان اجرا توسط ماشین PHP کامپایل خواهد شد.کامپایل کردن در زمان اجرا دفعات اجرای فایل آغاز گر را افزایش میدهد.چون یک مرحله اضافه به زمان اجرا می افزاید. ساختار الگوگونه PHP میتواند قبل از زمان اجرا توسط مترجم هایی درست شبیه زبانهای برنامه نویسی همچون C ترجمه شود.( زبان برنامه سازی PHP برنامه دار است تا جائیکه برای تمدید کردن آن استفاده شود.) کد میتواند کیفیت کد کامپایل شده را با کم کردن اندازه آن و ایجاد کردن تغییراتی که بتواند زمان اجرا را کاهش دهد و کارایی را بهبود ببخشد بالا ببرد و بهینه نماید. نوع کامپایلر PHP آنچنان است که اغلب فرصت برای بهینه سازی کد آن وجود دارد.به طور مثال میتوان برای بهینه سازی کد بهینه ساز Zend را نام برد. شتابگر PHP میتواند سطح کارایی را با ذخیره کردن نوع کامپایل شدهای از ساختار PHP در حافظه تسهیم شده بالا ببرد تا از هزینههای تجزیه و کامپایل کد در زمان اجرا جلوگیری شود. ایمنی: میزان ناامنی نرم افزار نوشتاری PHP که توسط نرم افزار های رایج دیگر در معرض آسیب پذیری است به این صورت میباشد: 12 درصد در سال2003 20 در صد در سال 2004 28 در صد در سال 2005 43 در صد در سال 2006 36 در صد در سال2007 و 33 در صد در بخشی از سال 2008 بیشتر از یک سوم آسیب پذیری نرم افزار PHP به تازگی صورت گرفته .اغلب آسیب ها با پیروی نکردن از قوانین برنامه نویسی ایجاد میشود و این آسیب ها مرتبط با نسخه قدیمی PHP است. یکی از مهمترین این نا امنی ها متغیر های رجیستری هستند که از سال 2002در PHP نسخه 4.2 بدون استفاده شده اند.
ترکیب:
یک برنامهٔ PHP میتواند قسمتی از یک برنامهٔ HTML باشد.PHP کد را بدون تعیین حدود کردن تجزیه میکند.هر چیزی خارج از این محدوده به طور مستقیم به خروجی فرستاده میشود و توسط PHP تعیین نمیشوند.حدود رایج و مشترک <? و php?> است که به ترتیب بسته کردن و باز کردن میباشد. علائم کوتاه میتواند برای شروع کد به کار روند: =?> یا ?> و علامتی که برای پایان کد به کار میرود:<? این علائم به طور رایج استفاده میشود.اما علائمی مانند <% و =% > یا %> کمتر مورد استفاده قرا میگیرند. به همین خاطر استفاده ازعلائم کوتاه و ASP کم شده است. هدف از این ها جدا کردن PHP و HTML میباشد. متغیر هایی که قبل از آن ها علامت $ به کار میرود لازم نیست مشخص شوند .بر خلاف نامها و توابع کلاس نام متغیر ها به کوچک و بزرگ بودن حروف حساس است.PHP در حالت زبان form free با خط جدید و فاصله سرو کار دارد( به جز در رشته ها) و جملهها با سمی کالن تمام میشوند.PHP دارای سه نوع روش برای توضیحات میباشد.از/* */ و // برای توضیحات استفاده میشود.همچنین از # برای توضیحات کوتاه استفاده میشود. PHP در واژگان مانند زبانهای سطح بالا همچون C است.if شرطی- حلقههای while و for و توابع بازگشتی شبیه به زبان C و ++C است.
شیوه کار برنامه
یک برنامهٔ پیاچپی میتواند قسمتی از یک برنامهٔ اچتیامال (HTML) باشد. مثلاً در برنامهٔ زیر تنها
<?php echo"salaam php!" ?>
به زبان پیاچپی است و بقیهٔ برنامه به زبان HTML نوشته شده است. برای جداسازی برنامهٔ پیاچپی و برنامهٔ اچتیامال باید قسمت پیاچپی را بین php?> و <? قرار داد. لازم به ذکر است که بجای تگ آغاز که همانا php?> است، میتوان از حالت خلاصه شده آن که به صورت ?> است استفاده نمود، منتها این کار استاندارد نبوده و بستگی به تنظیمات هنگام نصب php دارد. بنابر این توصیه میشود که از همان حالت کامل استفاده شود.
<code>
<pre>
<html>
<head>
<title>Nomoone</title>
</head>
<body>
<?php echo "Salam PHP"; ?>
</body>
</html>
</pre>
</code>
با صدا زدن صفحهای با متن بالا از سرور بهوسیله مرورگر در صفحه "Salam PHP" را میبینیم.
نوع داده:
PHP همه متغیرها را در یک محدوده مستقل ذخیره میکند .این محدوده به طور نمونه 32 بیت اعداد علامتدار است. اعداد بدون علامت در حالتهای معینی به مقادیر علامتدار تبدیل میشوند: این رفتار در زبانهای برنامه نویسی متفاوت است.متغیرهای صحیح میتوانند به صورت دهدهی(مثبت یا منفی) ٬هشت هشتی و شانزده شانزدهی مشخص شوند.
اعداد واقعی نیز در محدوده معینی ذخیره میشوند.آنها میتوانند به دو صورت اعشاری و علمی استفاده شوند.PHP دارای نوع محلی به نام بولین میباشد که شبیه به بولین در زبان جاوا و ++C است.در نوع داده بولین مقدار غیر صفر به عنوان درست و مقدار صفر به عنوان نادرست استفاده میشود.همانطور که در پرل و ++C نیز همین طور است.
نوع داده null برای متغیرهایی که هیچ مقداری ندارند استفاده میشود.متغیرهایی با نوع مرجع به منابع خارجی اشاره میکنند.اینها نوعا توسط توابع ایجاد میشوند و تنها میتوانند با همان تابع مورد استفاده قرار گیرند.مانند پوشهها و عکسها و پایگاه داده.PHP آرایهها و رشتهها را هم حمایت میکند.
کتابخانه استانداردPHP(SPL) به منظور حل مسائل استاندارد و دسترسی به دادههای موثر و کلاسها به کار میرود.
5.2 و قدیمی تر :
توابع بهترین توابع نیستند و تنها میتوانند با نامشان صدا زده شوند.توابع تعریف شده توسط کاربر میتوانند بیرون از نمونه اولیه ایجاد شوند.توابع میتوانند در درون بلوکها تعریف شوند.توابع فراخوانی شده باید از پرانتز استفاده کنند.به جز آرگومان zero توابع سازنده کلاس با اپراتور new فراخوانده میشوند.در اینجا پرانتزها اختیاری هستند.PHP توابع بی نام را که توسط دستور function_ creat ایجاد میشوند را هم پشتیبانی میکند.اگر چه درست نیستند چون توابع بی نام از اسم بر خوردار نیستند و توابع تنها میتئانند توسط نامشان صدا زده شوند. 5.3 وجدیدتر:
PHP از توابع درجه اول و توابع بی نام حمایت میکند که توسط ساختار زیر پشتیبانی میشوند:
function getAdder($x)
{
Return function ($y) use ($x) {
return $x + $y;
};
}
در اینجا تابع( )getAdder یک پارامتر x$ ایجاد میکند که آرگومان y$ اضافی را میگیرد و آنرا به صدا زننده بر میگرداند.
اشیا:
برنامه نویسی شی گرا به 4PHP اضافه شد. اشیا در5 PHP به طور کامل دوباره نوشته میشود.در نسخه قبلی PHP اشیا مانند تایپ های اولیه به کار برده میشوند.اشکال این روش این بود که وقتی یک متغیر تعریف میشود تمام اشیا کپی میشوند.در روش جدید اشیا با handle بازگشت داده میشوند نه با مقدار.5PHP متغیر های عضو خصوصی و حفاظت شده تعریف میکند.همچنین یک روش استاندارد برای معرفی سازنده و مخرب همانند زبان برنامه سازی ++C تعریف میکند. interfrace های خاصی وجود دارد که به اشیا اجازه میدهد بر روی زمان اجرا اثر بگذارد.اگر توسعه دهنده یک کپی از یک شی با استفاده از کلمه محفوظ clone ایجاد کند ماشین zendآنرا بررسی خواهد کرد که آیا روشی برای آن تعریف شده یا نه.اگر نشده بود یک clone پیش فرض را صدا خواهد زد که ویژگی های آن شی را کپی میکند.اگر تعریف شده بود برای ویژگی های لازم اشیا ایجاد شده معتبر است.برای سادگی ماشین تابعی را تولید میکند که مشخصات شی مرجع را وارد میکند که برنامه نویس میتواند با یک مقدار مشابه شی مرجع آغاز به کار کند و تنها ویژگی هایی را که نیاز دارد تغییر دهد.
منبع: ویکی پدیا