زبان PHP یک زبان برای برنامه نویسی می باشد. اما یک زبان کامل نمی باشد و اصطلاحا یک زبان اسکریپ نویسی ست؛ در مبحث اسکریپ نویسی با آن آشنا خواهید شد. تفاوت ورژن PHP در طول سالیان دستخوش تغییرات زیادی شده است که در این مقاله به آن خواهیم پرداخت
PHP ابتدا از کلمه Personal Home Pages که توسط سازنده آن معرفی شده بود، آمده است. اما به مرور زمان مخفف کلمه Hypertext Preprocessor به معنای پیش پردازنده ی ابر متن می باشد. برای آشنایی با تاریخچه PHP، قسمتتاریخچه ی آن را مطالعه نمایید.PHP در زبان برنامه نویسی وب برای طراحی سایت، یک متد ایجاد می نماید که طراح سایت می تواند با صدا کردن آن در بین کد های html، از آن استفاده نماید.
فهرست موضوعی
PHP چگونه کار می کند؟
ما توسط PHP ابتدا کد های مورد نیاز را تولید می نماییم. کد های تولید شده شباهت زیادی به کدهای زبان های C دارند. ورژن های مختلف php برای همخوانی بیشتر با صفحات وب و رفع باگ های آن ها ارتقاء یافته اند.
پس از تولید کد و لینک کردن آن به پایگاه داده مورد نظر، PHP آنها را کامپایل و ترجمه کرده و خروجی html به ما می دهد.
برای توضیح بهتر باید بگوییم PHP مانند یک فیلتر عمل می نماید؛ به این صورت که ورودی را مانند یک متن و کد می گیرد و خروجی را به صورت یک فایل چند رسانه ایی html نمایش می دهد.
خروجی هایی که بهترین حالت ممکن بهینه شده و دارای حجم کم و کیفیت بسیار بالا می باشند.
در طراحی سایت بسیاری از وب سایت ها امروزه از PHP استفاده شده است. وب سایت معروف Yahoo را می توانیم به عنوان مثال به شما معرفی نمایم، که در بخش های زیادی از وب سایت خود از PHP استفاده نموده است؛ همچنین خود این وب سایت از حامیان بزرگ PHP می باشد.
منظور از این پیش پردازنده این می باشد که PHP قبل از html به پردازش صفحات وب می پردازد. معمولا عملگر های نوشته شده با PHP مثل یک متد کار می کنند که قبل از هر کلیک اتفاق خواهند افتاد.
php از چه قسمت هایی تشکیل شده است
در طراحی سایت، طراحان وب سایت، PHP را به سه قسمت تقسیم می نمایند:
ماژول های تابع :
ابزار و کد های از قبل نوشته شده ایست که بر روی نرم افزار PHP قرار دارد و به ما در کد نویسی سریع تر و بهتر کمک فراوانی خواهند نمود؛ که برای نوشتن این کد ها زمان زیادی نیاز بود، که وقت ما را در طراحی سایت می گرفت.
هسته زبان:
هسته ی زبان همانطور که از اسمش پیداست، بر روی زبان و کد ها کار می نماید. هسته ی زبان ابتدا کد ها را ترجمه می نماید، و سپس تمام کد ها را خط به خط اجرا می نماید.
واسط سرویس دهنده وب :
بعد از ترجمه کد ها و اجرا آنها توسط هسته ی زبان، واسط سرویس دهنده، ارتباط بین PHP و سرویس دهنده ی اینترنتی را بر قرار می نماید.
مزیت استفاده از PHP :
مهمترین دلیل استفاده از PHP رایگان بودن آن و باز بودن کدهای آن می باشد. در طراحی سایت به صورت حرفه ایی،طراحان سایت ها، برای اینکه طراحی وب سایت شان دزدیده نشود و طرح های آن ها توسط افراد دیگر استفاده نشود، کدهای برنامه خود را می بندند؛ اما وب سایت های نوشته شده با PHP، این امکان را از طراحان سایت گرفته است و تمام کدها را در اختیار کاربران قرار داده است.
در زیر مهمترین دلایل استفاده ما از PHP را آورده ایم :
- سرعت و امنیت بالا برای وب سایت از نظر هک نشدن توسط مهاجمان وب
- اتصال به تمام دیتابیس های موجود و ارتباط سریع و راحت با آنها
- کدها در PHP رایگان بوده و در دسترس می باشند و سورس کد ها نیز کاملا باز می باشند
- یادگیری PHP ساده تر بوده و برنامه نویسی با آن بسیار ساده می باشد
- طراحان سایت با توجه به نیازهایشان می توانند آن را پیکر بندی کنند و قابلیت انعطاف پذیری بالای آن
- تعدادی زیادی از این نرم افزار برای طراحی سایت استفاده می نماید، و این باعث می شود افراد زیادی به توسعه آن کمک کنند
- بر روی همه ی سیستم عامل های موجود قابل اجرا می باشد
هم اکنون زمان آن رسیده با ورژن های مختلف php آشنا شویم :
ویژگیهای PHP 4
در 22 ماه می سال 2000، تقریبا 18 ماه پس از اعلام رسمی در مورد از سر گیری فعالیتهای برنامه نویسی برای نسخه جدید، PHP 4.0 بیرون آمد. بسیاری از مردم، نسخه PHP 4 را جنجالی ترین نسخه از این زبان می دانستند و سخنهایی از آن در اینترنت به گوش می رسید. تنها چند ماه پس از بیرون آمدن این نسخه، Netcraf، گزارشی بیرون داد که تخمین می زد بیشتر از 3.6 میلیون دامنه، PHP را روی دامنه های خود نصب کرده اند.
PHP 4، تغییرات بسیاری را در خود جای داده بود. تغییرات این نسخه به قرار زیر بودند:
بهبود در مدیریت منابع: یکی از مشکلات اولیه نسخه های 3.x، عدم تناسب پذیری بود. دلیل این موضوع عمدتا بخاطر آن بود که طراحان این زبان روند پیشرفت سریع این زبان و استفاده در برنامه های بزرگ را کوچک شمرده بودند. زبان PHP در ابتدا برای سایت های بزرگ طراحی نشده بود و ادامه علاقه به استفاده از این زبان برای چنین مقاصدی منجر شد تا برنامه نویسان آن به اکثر مکانیک های این زبان از نو بیاندیشند.
پشتیبانی از شی-گرایی: نسخه 4، درجه ای از شی گرایی را در خود جای داده بود، اگرچه عمدتا این پیاده سازی، خارج از سطح توقعات بود و حتی خیلی ضعیف پیاده سازی شده بودند. ولی با وجود این، ویژگیهای جدید، نقش مهمی را در جذب کاربرانی که عادت به برنامه نویسی با زبانهای شی گرا (OOP) را داشتند ایفا می کرد. کلاسهای استاندارد و روشهای برنامه نویسی شی گرا در دسترس قرار گرفتند ضمن آنکه ویژگیهایی نیز نظیر سربارگذاری و اطلاعات زمان اجرای کلاسها نیز به این زبان اضافه شده بودند. نسخه کاملتری از شی گرایی، در نسخه 5 این زبان پیاده سازی شد که در فصل 6، به تفصیل به آن خواهیم پرداخت.
پشتیبانی از مدیریت session ها: مدیریت session های http، در نسخه های 3.x از طریق بسته PHPLIB در اختیار کاربران قرار گرفته بودند (http://phplib.sourceforge.net)، که در نسخه 4، بصورت یکپارچه توسط برنامه نویسان از نو نوشته شد. این ویژگی به برنامه نویسان ابزاری را ارائه می داد که توسط آن، بتوانند فعالیتهای کاربران و تمایلات آنها را بصورت غیر موازی، راحت و موثر، ردگیری کنند. فصل 18 این قابلیتها را مورد بحث قرار می دهد.
رمزگذاری: کتابخانه MCrypt، بصورت پیش فرض در این نسخه قرار داده شده بود تا کاربران بتوانند رمزگذاری را بصورت کامل و hash شده و با استفاده از الگوریتمهای رمزگذاری که شامل Blowfish، MD5، SHA1 و TripleDES است انجام دهند. فصل 21 به تفصیل به این قابلیتهای PHP می پردازد.
پشتیبانی از ISAPI: پشتیبانی از ISAPI به کاربران این قابلیت را میدهد تا از PHP در کنار IIS وب سرور مایکروسافت استفاده نمایند. در فصل 2 نشان خواهیم داد که چگونه PHP را هم بر روی وب سرورهای IIS و هم بر روی وب سرورهای Apache نصب نمایید.
پشتیبانی از COM/DCOM: یکی دیگر از مزیتهایی که برای کاربران ویندوز در این نسخه از PHP وجود دارد، قابلیت دسترسی و نمونه سازی از اشیای COM است. این قابلیت، تعامل وسیعی را با برنامه های ویندوز بوجود آورد.
پشتیبانی از جاوا: یکی دیگر از قابلیتهایی که به PHP قدرت می داد، پشتیبانی از بسته بندی اشیای جاوا در یک برنامه PHP بود. این قابلیت در نسخه 4 اضافه شد.
کتابخانه عبارات قانونمند سازگار با Perl (PCRE): زبان Perl زمانی بعنوانی سلطان پردازش رشته ها قلمداد می شد. توسعه دهندگان PHPبه این نکته واقف بودند که قدرت توابع “عبارات قانونمند”، نقش مهمی را در مقبولیت PHP بازی خواهد کرد. در نتیجه آنها تصمیم گرفتند تا توابع Perl را درون برنامه PHP قرار دهند به جای آنکه آن را از نو بسازند. با این تصمیم آنها بسته کتابخانه PCRE را در بسته پیش فرض PHP قرار دادند (نسخه 4.2.0). فصل 9 به تفصیل به این موضوع خواهد پرداخت و مقدمه ای کوتاه را برای دستورات عبارات قانونمند که غالبا گیج کننده هستند را باز خواهد کرد.
علاوه بر این ویژگیها، صدها تابع دیگر نیز در نسخه 4 به PHP اضافه شدند که منجر به افزایش قابلیتهای این زبان شد.
PHP 4، جهش بزرگی رو به جلو در بلوغ این زبان بود که ویژگیها جدیدی را ارائه می داد. ولی تیم توسعه دهندگان PHP آرام ننشستند و خیلی زود دست به کار بزرگ دیگری زدند تا یک گوریل 800 پوندی را در دنیای اسکریپت نویسی تحت وب پیاده سازی کنند: PHP 5.
ویژگیهای PHP 5
نسخه 5 از PHP تحول بزرگی دیگری در این زبان برنامه نویسی بود. اگرچه نسخه های قبلی شامل تعداد زیادی از کتابخانه هایی بودند که به تازگی اضافه شده بودند، ولی نسخه 5، شامل ارتقای توابع موجود و افزودن چندین ویژگی بود که امکان ارتباط این زبان را با معماری های دیگر زبانهای برنامه نویسی پیشرفته می داد:
قلبلیتهای شی گرایی بطور وسیعی پیشرفت کرده بودند: ارتقای قابلیت های شی گرایی در PHP، قابل رویت ترین ویژگی در نسخه بود. نسخه 5 شامل افزودن تعداد زیادی از توابع می شد، توابعی نظیر سازنده ها و نابود کننده ها، تکثیر اشیاء، تجرید سازی کلاس ها (Class Abstraction)، حوزه متغیرها، رابط ها، و ارتقای طریقه مدیریت کردن اشیا توسط PHP. فصول 6 و 7، مقدمه هایی بر این موضوعات خواهند بود.
مدیریت خطاهای try/catch: طریقه مدیریت دستی خطاها در زبانهای برنامه نویسی سازمان یافته، خطا پذیر و سخت می باشد. برای غلبه بر این مشکل، نسخه 5، از مدیریت خطاها پشتیبانی می کرد. مدیریت خطاها در بسیاری از زبانهای برنامه نویسی نظیر C++، C#، Phyton، و Java، ابزاری عالی را برای استاندارد سازی منطق گزارش خطاها بدست می دهد. در فصل 8 بیشتر با این موضوع آشنا خواهیم شد.
ارتقای پشتیبانی از XML و وب سرویس ها: پشتیبانی از XML، با استفاده از کتابخانه libxml2 ارائه شد و نیز توابعی جدید و نسبتا آینده دار برای خواندن و دستکاری در XML ارائه شدند. نام این افزونه جدید SimpleXML نام دارد. افزونه SOAP نیز با این نسخه ارائه شد. در فصل 20، با این دو افزونه به همراه تعدادی دیگر از افزونه های وب سرویس بیشتر آشنا خواهید شد.
پشتیبانی از SQLite: ویژگی که واقعا حیاتی نبود ولی برنامه نویسان با محبت تمام این ویژگی را برای پشتیبانی از نسخه ای خلاصه شده از دیتابیس سرور به نام SQLite فراهم کردند. SQLite راه حلی ساده را برای برنامه نویسانی که به دنبال استفاده از دیتابیس هستند ولی نمی خواهند با پیچیدگیهای مدیریتی آن دست و پنجه نرم کنند فراهم می کند. پشتیبانی PHP از این موتور قدرتمند پایگاه داده، در فصل 22 مورد بحث قرار خواهد گرفت.
توجه: ارتقای قابلیتهای شی گرایی که در نسخه PHP 5 ارائه داده شدند منجر شد تا قدرت این زبان برنامه نویسی افزایش بیشتری یابد: این قابلیتها این امکان را می دادند تا با استفاده از این زبان فریم ورک بتواند ساخته شود.
با بیرون آمدن نسخه 5، شهرت PHP به بالاترین حد خود در آن زمان رسید. طبق گزارشات Netcraft، PHP تقریبا در 19 میلیون دامنه نصب شده بود.PHP همچنین مشهورترین ماژول Apache بود که تقریبا روی 54 درصد از کل سیستمهای Apache نصب شده بود. این آمار طبق گزارشات شرکت E-Soft ارائه شده است.
ویژگیهای PHP 6
در زمان نگارش این متن، PHP 6 در نسخه بتا یا آزمایشی خود قرار دارد و قرار است تا پایان سال 2007 میلادی بیرون داده شود. تصمیم بر سر اینکه آیا این نسخه می بایست نسخه ای اصلی باشد (نسخه 6) یا نسخه ای میانی، توسط بسیاری مورد بحث قرار گرفته است و آنطور که بنظر می رسد بسیاری از آزمایش کنندگان این نسخه، آن را نسخه ای اصلی می دانند چرا که حداقل یک ویژگی مهم به آن اضافه شده است: پشتیبانی از یونیکد. در هر صورت، در دنیای برنامه نویسی، عبارت تغییر مهم، بیانگر چشمگیر و قابل حس بودن است در نتیجه نباید اجازه داد تا ویژگیهای مهم دیگر اضافه شده به این نسخه، نادیده گرفته شوند. لیستی از تغییرات مهمی که همراه این نسخه ارائه شده اند در زیر آورده شده است:
- پشتیبانی از یونیکد: پشتیبانی از یونیکد در این نسخه اضافه شده است که باعث می شود تا ساخت برنامه های چند زبانه راحت تر صورت گیرد.
- ارتقای امنیت: افزایش امنیت پیشرفت زیادی در این نسخه کرده است و بطرز چشمگیری منجر به کاهش اشتباهات امنیتی شده است که شاید بتوان گفت ایراد این زبان نبوده بلکه از اشتباهات برنامه نویسان نامتجرب ناشی می شدند. این مسائل در فصل 2 مورد بحث قرار خواهند گرفت.
- ویژگیهای و سازه های جدید زبان: تعدادی از ویژگیهای دستوری جدید به این نسخه اضافه شده اند که مهمترین آنها شامل، متغیرهای صحیح نوع 64 بیتی، ساختار جدید foreach برای آرایه های چند بعدی و پشتیبانی از break و label ها. برخی از این ویژگیها در فصل 3 بررسی خواهند شد.
ویژگیهای PHP 7
پی اچ پی در نسخه 7 از موتور Zend Engine 3.0استفاده کرده است که تقریبا 50% استفاده رم نسبت نه نسخه های قبلی کاهش یافته . و این باعث میشه که کاربران بیشتری همزمان از برنامه شما روی سخت افزارهای نه چندان قوی همدیدن کنند . پی اچ پی 7 با توجه به حجم کاری امروز طراحی شده و بازنویسی شده است.
مهمترین قابلیتهای جدید php7
- اعلان گروهی use
- اپراتورهای جدید ?? و <=>
- امکان کچ کردن آنچه که باعث خطای مهلک میشود.
- وصل کردن توابع بدون اسم به یک آبجکت در runtime
- همانند زبانهای متداول مثل C میتوانید برای توابع نوع مقدار بازگشتی تعریف کنید.
- تعریف نوع دادههای ورودی در توابع
- تعریف کلاسِ بدون اسم همانند توابع بدون اسم
- Improved performance: افزودن PHPNG به این نسخه باعث دوبرابر شدن سرعت آن نسبت به PHP5.
- Lower Memory Consumption : نسخه 7 بهینه شده و از منابع کمتری استفاده می کند .
- Scalar type declarations : می توانید نوع پارمترها و مقادیر برگشتی را مشخص کنید .
- Consistent 64-bit support : پشتیبانی دائمی از ماشین های معماری 64 بیتی.
- Improved Exception hierarchy : سلسله مراتب Exeption ها رعایت شده است .
- Many fatal errors converted to Exceptions : محدوده Exception ها افزایش یافته و خیلی از FatalError ها به Exception تبدیل می شوند.
- Secure random number generator : در این نسخه چندین api برای ایجاد اعداد تصادفی امن ایجاد شده است .
- Deprecated SAPIs and extensions removed : انواع SAPI های قدیمی و پشتیبانی نشده و پسوند ها از آخرین نسخه حذف شده اند.
- The null coalescing operator : اعمال کننده جدید برای مقادیر null اضافه شده است .
- Anonymous Classes : پشتیبانی برای کلاس های پنهان اضافه شد.
- Zero cost asserts : پشتیبانی برای Zero cost asserts اضافه شد.
در نهایت کامپایلر PHP7 کاملا بازنویسی شده و در قسمت مدیریت مموری هم بیشتر سعی شده با stack کار بشود تا heap، که طبیعتا سرعت پردازش سریعتر خواهد شد.
در نهایت تست انجام شده برای آشکار ساختن تغییرات ساختار داخلی PHP7 انجام شده که در تصاویر زیر قابل مشاهده است:
موارد اشاره شده در بالا، مواردی است که جزو قابلیتهای کلیدی به حساب میآیند. تغییرات دیگری نیز در ساختار و سینتکس PHP7 رخ داده است که میتوانید به منابع درج شده مراجعه نمایید.
قابلیت های PHP ورژن 8
PHP 8 چندین ویژگی جدید و بهبود عملکرد را نسبت به نسخه های قبلی معرفی کرد. در اینجا برخی از توانایی ها و پیشرفت های کلیدی موجود در PHP 8 آمده است:
کامپایل JIT (Just In Time): PHP 8 یک کامپایلر JIT را معرفی کرد که می تواند عملکرد را به طور قابل توجهی برای عملیات فشرده CPU بهبود بخشد. این تغییر به PHP اجازه می دهد تا در زمان اجرا کد را در کد ماشین کامپایل کند که می تواند منجر به بهبود سرعت در موارد استفاده خاص شود.
انواع ورژن های PHP ورژن هشت : PHP 8 از انواع توابع جدید پشتیبانی می کند و به یک تابع اجازه می دهد چندین نوع را برای یک پارامتر واحد بپذیرد. به عنوان مثال:
-
function foo(int|float $value): void {}
آرگومانهای نامگذاری شده: اکنون میتوانید آرگومانها را با نام آنها به یک تابع ارسال کنید، که خوانایی کد را بهبود میبخشد و امکان رد شدن از پارامترهای اختیاری را فراهم میکند:
function createUser(string $name, int $age, string $email = “”) {} createUser(name: “John”, age: 30);
createUser(نام: “دیزاین مای سایت”، سن: 30)؛
بیان تطبیق: یک عبارت تطبیق جدید اجازه می دهد تا نحو تمیزتری را در مقایسه با عبارات سوئیچ ارائه دهد و مقادیر را مستقیماً برگرداند:
$result = match($input) {
1 => "One",
2 => "Two",
default => "Unknown",
};
Promotion Property Constructor: این ویژگی کد boilerplate را در سازنده های کلاس با اجازه دادن به مشخصه ها و مقداردهی اولیه در امضای سازنده کاهش می دهد:
class User {
public function __construct(private string $name, private int $age) {}
}
ویژگی ها (Annotations): PHP 8 ویژگی هایی را معرفی می کند که به متادیتا اجازه می دهد تا به کلاس ها، متدها و ویژگی ها به روشی بومی اضافه شود:
#[ویژگی]
کلاس MyAttribute {}
اپراتور Nullsafe: یک عملگر جدید (?->) به شما امکان می دهد بدون نیاز به بررسی صریح null به ویژگی ها و روش های یک شی دسترسی داشته باشید:
#[Attribute] class MyAttribute {}
سیستم نوع بهبود یافته: ویژگی های سیستم نوع پیشرفته PHP 8، مانند افزودن انواع جدید و مدیریت بهتر پیام های خطا برای انواع نامعتبر.
Error Handling Improvements: بهبود قابلیت های رسیدگی به خطا با پیام های خطای واضح تر و آموزنده تر برای انواع خاصی از خطاها.
توابع تصادفی سازی: توابع جدید برای تصادفی سازی، از جمله random_int() و random_bytes() که از روش های قدیمی برای این اهداف دور می شوند.
این ویژگیها، در میان سایر ویژگیها، PHP 8 را به ارتقای قابل توجهی تبدیل میکند که عملکرد، صحت و سهولت استفاده را برای توسعهدهندگان بهبود میبخشد. استفاده از سرور اختصاصی قدرتمند که تمامی ورژن های مختلف php را بخوبی شناسایی کرده و بدون خطا لود کند را میتوانید از وب سایت ارومیاسرور تهیه نمایید
سلام
ممنونم
اين مطلب خيلي كمكم كرد
فقط يه سوال ؟
Php7.1 چه فرقي با ٧ داره؟
با سلام
تو متن به خوبی توضیح داده شده
یه سری باگ ها تو ورژن 7.1 اصلاح شده و همچنین سرعت پینگش بالا رفته یا به عبارتی بهتر شده .
سلام ما ورژن php سایتمون رو به 7.2 ارتقا دادیم اما سایت بالا نمیاد و ارور http 500 میده. چطور باید متوجه بشیم کدوم قسمت سایت که وردپرسی هست سازگار نیست؟
سلام
مشکل در ماژول های فعال شده و نشده هست
دقیقاً چک کنید که چه ماژول هایی در ورژن قبلی شما فعال هست که همون ها رو هم در ورژن 7.2 فعال کنید
موفق باشید