در این مقاله در مورد PHP 5 صحبت میکنیم. به نظرم مطالعه تاریخچه تغییرات در کنار معرفی منابع آموزشی این فرصت رو به ما میده تا با چیزی عمیق تر آشنا بشیم و نسبت بهش تسلط بیشتری پیدا کنیم.
تمام تلاشم رو کردم تا بتونم برای هر قسمت منابع مختلفی معرفی کنم ولی متاسفانه بهخاطر قوانین ویرگول این کار شدنی نیست. برای همین تو نسخه فارسی این سری از مقالات نتونستم اینکار رو انجام بدم و بهجاش در آخر یکسری منابع کلی معرفی کردم ولی اگر دوست دارید تمام منابع دسترسی داشته باشید لطفا نسخه انگلیسی این مقاله تو لینکدین یا مدیوم رو ببینید، اونجا برای هر قسمت منابع مناسبی رو معرفی کردم.
از اونجایی که نباید این مقاله طولانی بشه چون امکان داره موقع خوندن خسته بشید، بیاید از این نسخه شروع کنیم و تغییرات مهمی که اتفاق افتاده رو بررسی کنیم.
۱. پشتیبانی از namespaceها: روشی برای کپسولهسازی هستند و باعث کنترل چالش نامگذاری مشترک کلاسها، توابع، اینترفیسها و ثابتها میشن مطمئناً تا الان ازشون استفاده کردید و ارزش این رو دارند که عمیقتر در موردشون بدونیم.
۲. پشتیبانی از ویژگی late static binding: برای حل کردن چالش مربوط به رفرنس دادن به کلاس صدا زده شده در ترکیب ارثبری و استاتیکها، ممکنه با این چالش روبرو بشید و برای حل کردنش نیاز به این ویژگی دارید پس خوبه که در موردش تحقیق کنید.
۳. پشتیبانی از توابع lambda: در واقع توابع ناشناسی که میتونن تو یه متغیر ذخیره بشن یا به عنوان آرگومان ورودی به یه تابع دیگه پاس داده بشن توابع lambda میگیم و میشه گفت که closure ها نمونهای از توابع lambda هستند.
۴. پشتیبانی از callStatic__: برای صدا زدن متدهای استاتیک غیرقابل دسترس یا متدهای استاتیکی که به طور واقعی وجود ندارند از این مجیک متد استفاده میشه.
۵. پشتیبانی از ternary operator: این دستور نوشتن شرطها رو برامون کوتاه تر میکنه، در واقع میتونیم به کمک این ویژگی شروط تک خطی داشته باشیم. به احتمال زیاد ازش استفاده کردید یا جاهای مختلفی باهاش روبرو شدید ولی ارزش این رو داره یکبار دیگه اختصاصی در موردشون تحقیق کنید.
تو این نسخه، کدبیس PHP به لطف حذف کردن ویژگیهای منسوخ شده تمیزتر شد، وبسرور داخلی بهش اضافه شد و افزایش performance به همراه کاهش استفاده از مقدار حافظه هم تو این نسخه اتفاق افتاد، بیاید چندتا از ویژگیهای اضافه شده رو باهم بررسی کنیم.
۱. پشتیبانی از Traitها: در واقع traitها برای ایجاد کدهای reusable و حل مسئلهی single inheritance بودن php به ما کمک میکنند. تو جاهای مختلفی از traitها استفاده میکنیم مثلا برای پیادهسازی soft delete ها در لاراول نیاز به استفاده از trait مربوط به اون یعنی SoftDeletes تو مدل مربوطه رو داریم.
۲. پشتیبانی shortened array syntax: از این نسخه به بعد، توسعهدهندهها تونستند با استفاده از براکت [ ] آرایهها رو تعریف کنند. تا قبل اون باید به کمک دستور ()array آرایههارو تعریف میکردیم.
۱. پشتیبانی از generator: این قابلیت رو دارند که بتونیم دادهای رو پیمایش کنیم بدون اینکه کل اون داده رو داخل حافظه نگه داریم. برای مثال میشه به lazy collection تو لاراول اشاره کرد که از همین مفهوم استفاده کرده.
۲. پشتیبانی از کلمه کلیدی finally: در پروسه مدیریت خطاها، finally مشخص میکند که پس از فرآیند مدیریت خطا چه اتفاقی بیفته.
۳. اضافه شدن Password Hashing API: از ()password_hash و ()password_verify برای هش کردن و تائیدیه پسورد کاربر تو پروسه لاگین استفاده کردید؟ اینها بخشی از این API هستند. اگه کلا در مورد جمله قبلی چیزی نمیدونید بذارید خلاصه بگم که به کمک این API شما میتونید عملیات هش کردن رمزعبور و تائیدکردن اونها رو انجام بدید.
۴. اضافه شدن کلاس DateTimeImmutable: مثل DateTime عمل میکنه با این تفاوت که وقتی تغییری روش اتفاق بیفته شی جدیدی ازش برگردونده میشه.
۵. منسوخ شدن اکستنشن mysql: این افزونه گروهی از توابع مثل ()mysql_connect رو با خودش داشت که میتونستیم با دیتابیس MySQL تعامل کنیم. از این نسخه بود که استفاده از MySQLi یا PDO_MySQL به طور رسمی توصیه شد.
۶. اضافه شدن قابلیت class:: : یکی از مواردی که میشه بهش اشاره کرد استفاده از این قابلیت برای تعریف روتها در لاراول هست.
آخرین مورد از نسخه پنجم PHP که تغییرات جالبی مثل پشتیبانی از توان به کمک (**) یا توانایی آپلود فایلهای بزرگتر از ۲ گیگابایت رو با خودش به همراه داشت. بیاید چند مورد رو عمیقتر روبا هم بررسی کنیم.
۱. پشتیبانی از const برای تعریف متغیرها: به کمک این ویژگی میتونیم مقادیر ثابت تعریف کنیم. برای تعریف ثابتها ()define هم تو نسخه هفتم اضافه شده، ولی باید در نظر داشته باشید که تفاوتهایی باهم دارند و هر کدوم تو جای خاصی به کار میان.
۲. پشتیبانی از دریافت آرگومان با تعداد نامشخص متغیرها به کمک (…) : به نظرم عنوان کامل این ویژگی رو توضیح داده و الان خوبه که منبع معرفی کنم تا باهاش بیشتر آشنا بشید و ازش استفاده کنید. این قسمت از داکیومنت اصلی PHP که مربوط به این موضوع هست رو یه نگاه بندازید.
۳. گسترش استفاده از namespaceها: تو این نسخه namespace و کلمه کلیدی use رو برای استفاده از namespaceها طوری گسترش دادند که بشه از توابع و ثابتها هم پشتیبانی کنند.
با گوشهای از ویژگیها و تغییرات PHP 5 آشنا شدیم، خوشحال میشم که نظرات و پیشنهادات شما رو بدونم تا بتونم مطالب بهتری بنویسم. همونطور که گفتم بخاطر یکسری محدودیتها نتونستم تمامی منابع رو معرفی کنم، لطفا برای دیدن منابع کامل لطفا به نسخه انگلیسی این مقاله تو لینکدین یا مدیوم سر بزنید، ولی اگر فرصت اینکار رو ندارید این چندتا منبع رو داشته باشید.