بایگانی برچسب: PHP

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

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

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

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

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

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

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

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

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

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

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

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

تابع intdiv 😐

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

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

پارامتر session_start

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

کلاس IntlChar

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

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

 

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

بلاخره منتشر شد،نسخه جدید PHP

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

خیال راحت؟نه خیلی!

با منتشر شدن نسخه جدید ما میتونیم از این قابلیت ها استفاده کنیم ولی آیا وقتشه که از تمام قدرت PHP استفاده کنیم؟شاید هنوز وقتش نباشه ولی خب باید از یک جایی هم شروع کرد.چرا؟ چون هنوز خیلی از سرور ها به این نسخه ارتقا داده نشدند و هنوز خیلی از افراد هستند که در مقابل تغیرات مقاومت میکنند و قصد ندارند که سبک خودشونو بروزرسانی کنند!

و درنهایت اینکه بخش دوم نوشته PHP در راه انتشار یادم نرفته ولی با یکم تاخیر منتشرش میکنم.

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

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

مقایسه سرعت PHP7

افزایش سرعت

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

دو عملگر جدید

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HHVM، باعث پیشرفت PHP

با ساخته شدن HHVM توسط فیسبوک خیلی ها به دلیل سرعت چند برابری اون نسبت به PHP گمان کردند که شاید روزی HHVM کاملا جایگزین مفسر اصلی PHP شود.سپس نیز با وارد شدن زبان Hack توسط فیسبوک که نه تنها از نظر سرعت بلکه از نظر امنیت هم بسیار کامل‌تر از PHP بود این گمانه زنی ها قدرت بیشتری به خود گرفتند.همچنین به دلیل شباهت بسیار زیاد زبان Hack به PHP توسعه دهندگان به راحتی میتوانستند به Hack مهاجرت کنند.
نسخه جدید PHP یعنی PHP7.0 بر اساس جدول زمان بندی سایت رسمی پی اچ پی قرار است در تاریخ ۱۲ نوامبر امسال منتشر شود. تغیرات اعمال شده در این نسخه بسیار اساسی تر از نسخه های قبلی است و امکانات بسیار مهمی ازجمله اضافه شدن دو عملگر و پشتیبانی کامل از تکنولوژی ۶۴ بیتی که باعث افزایش تقریبا دو برابری سرعت پردازش نسبت به نسخه ۵.۶ شده.
یکی از مهم ترین تغیرات صورت گرفته را سایت خود PHP اینگونه معرفی میکند:

Return Type Declarations

تعین نوع داده بازگشتی،البته در توابع!اصل ماجرا که باعث نوشتن کل این مطالب شد همین قابلیت است.این قابلیت یکی از اصلی ترین قابلیت هایی است که در زبان Hack برای رقابت با PHP اضافه شده بود و شاهد هستیم که PHP هم دست روی دست نگذاشته و شاهد از بین رفتن خودش نبوده.ولی این دنیا مثل دنیای سامسونگ و اپل نیست که تا یکی از دیگری کپی کرد کار به دادگاه و شکایت بکشد.اینجا دنیای آزاده و همه برای پیشرفت میتونند از دستیافت های همدیگر استفاده کنند و درنهایت همشون پیشرفت کنند.

عروسی،پر!همایش،پر!پی اچ پی،پر!تایمر،پر!

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

صفحه همایش با تایمر منفی!

ولی موردی که هست اینه که چرا تست نکردین؟آخه چرا؟از افرادی مثل شما راستش انتظار میره که کل کارهایی که انجام میدین رو تست کنید!ولی بازم من کسی نیستم که به شما ایراد بگیرم و مهم اینه که شرکت کننده ها خیلی راضی بودن و گویا از نظر علمی هم خیلی غنی بود.