بایگانی برچسب: تغیرات

PHP در راه انتشار – قسمت دوم

با تاخیر خیلی زیاد بلاخره اینو گفتم بنویسم که موضوعم ناقص نمونه.

در پست PHP در راه انتشار – قسمت اول درباره یکسری از مهمترین تغیرات نسخه هفتم PHP گفتم و حالا میخوام بقیشونو بگم.

تعریف ثابت آرایه ای با استفاده از define

در نسخه ۵.۶ این امکان اضافه شده بود که از طریق const یک ثابت با مقدار آرایه ای تعریف کنیم. ولی یک مشکل اساسی داشت و ان هم این بود که شما نمیتونستید از متغیر های مقدار دهی شده برای مقدار دهی ثابت استفاده کرد. یکم توضیحش سخته. اجازه بدید نشون بدم.

مثلا به دستورات زیر دقت کنید. توی این دستورات خط دوم ارور میده.

ولی اگه من جایی نیاز داشته باشم تا با استفاده از یک متغیر یک ثابت رو مقدار دهی کنم پس باید چیکار کنم؟ خب اینجاست که define با تغیرات نسخه ۷ به کمکمون میاد.

خب خیلی راحت همینکار رو با define میکنیم و هیچ اروری هم دریافت نمیکنیم.

استفاده گروهی از namespace ها

خب برای اینم باز مثال ببینیم بهتره.

مثلا کد زیر برای دوران قبل از PHP7 بود:

همین کد بعد از دوران پیدایش نسخه ۷ام به این شکل میشه:

تابع intdiv 😐

این تابه دوتا پارامتر به عنوان ورودی میگیره و بخش صحیح حاصل تقسیم پارامتر اول به دوم رو برمیگردونه.

اینکه این تابع رو خودمون تعریف کنیم کار خیلی راحتی هست ولی خب گذاشتن دیگه…

پارامتر session_start

احتمال خیلی زیاد با session_start آشنا هستید. ولی خب این تابع هیچ پارامتری دریافت نمیکرد؛ البته تا نسخه هفتم. حالا به عنوان پارامتر اختیاری میتونه آرایه‌ای از تنظیماتی که قبل از این باید از php.ini تغیرشون میدادیم بگیره.

کلاس IntlChar

ّIntlChar یک کلاس از پیش تعریف شدست که داخل پر از ثابت ها و متود هایی هست که مربوط به بررسی و جمع آوری یکسری از اطلاعات مربوط به کاراکتر ها است.

تعدا ثابت ها و متود های داخل این کلاس به قدری زیاده که حتی تصور اینکه اینجا بررسیشون کنم ترسناکه. پس اگر میخواید دربارش بخونید برید به صفحه خود IntlChar داخل مستندات PHP .

 

خب اینطور که مشخصه به یک قسمت سومی یا حتی شاید چهارمی هم نیاز پیدا کنیم. اینبار دیگه قول نمیدم ولی سعی میکنم تا اونهارو هم اضافه کنم.

PHP در راه انتشار – قسمت اول

اگه سازندگان PHP روی حرفشون بمونن قراره تا آخر این ماه میلادی نسخه جدید PHP منتشر بشه.حالا اینکه نسخه ۶ چیشد که یک داستانه ولی امکانات PHP جدید داستان دیگه ای داره.قبلا هم توی پست HHVM، باعث پیشرفت PHP یکم درباره امکانات نسخه جدید توضیح داده بودم ولی اینجا میخوام علاوه بر کد های اونها چند تا مورد دیگه رو هم بگم.

مقایسه سرعت PHP7

افزایش سرعت

مورد اول که قبلا هم گفته بودم زیاد شدن خیلی زیاد سرعت مفسر پی اچ پی هست که دلیلشم بازنویسی مفسرش هست.

دو عملگر جدید

در نسخه جدید دو عملگر مقایسه ای اضافه شده اند.مورد اول عملگر <=> و مورد دوم عملگر ??.

به مثال ها توجه کنید:

مثال عملگر <=>

مثال عملگر  ?? (برای توضیح بهتر اینجوری مثال میزنم که خط اول معادل خط دوم هست)

حذف شدن کامل بخشی از موارد منسوخ شده

در نسخه های قبلی یکسری از آیتم ها از جمله توابع منسوخ شده بودند که در این نسخه به طور کاملا از مفسر حذف شده اند.از این توابع میتوان به توابع mysql اشاره کرد که توابع mysqli جایگزین آنها شدند.

برای اینکه ببینید دقیقا چیا حذف شدن میتونید به متنی که سایت خود پی اچ پی در این مورد منتشر کرده مراجعه کنید.

تعین نوع داده بازگشتی

این مورد جزو مواردی هست که که قبلا هم توضیح کمی دربارش دادم. کار این مورد اینه که نوع داده بازگشتی رو مشخص میکنید تا اگه داده دیگه ای بازگشت داده شد برنامه اگر قابل تبدیل بود اونو به نوع داده مشخص شده تبدیل کنه و اگر نه در صورتی که strict_types فعال باشه برنامه ارور بده.

تعین نوع داده ورودی

بعد از تعین نوع داده بازگشتی بلاخره نوع داده ورودی رو هم مشخص میکنیم.مثلا یک تابع فلان ورودی که میگیره از چه نوعی باید باشه.باز هم به مثال توجه کنید:

و البته این مورد هم در حالت عادی ارور نمیده ولی با فعال کردن strict_types درصورت درست نبودن ورودی ارور میده.

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

قسمت دوم PHP در راه انتشار بلاخره بعد از مدت طولانی منتشر شد و میتونید از لینکی که دادم اون رو مشاهده کنید.

PHP در راه انتشار – قسمت دوم