برنامه‌نویسی PHP

مهاجرت از PHP 5 به PHP 7

زمان پشتیبانی از PHP 5 به پایان رسیده است. سایت W3Techs تعداد سایت‌هایی که زبان برنامه‌نویسی آن‌ها PHP

زمان پشتیبانی از PHP 5 به پایان رسیده است. سایت W3Techs تعداد سایت‌هایی که زبان برنامه‌نویسی آن‌ها PHP است را براساس نسخه دسته‌بندی کرده است. همان‌طور که از نمودار پیداست، تعداد سایت‌هایی که از نسخه ۵ استفاده می‌کنند از نسخه‌های دیگر بیشتر است و این مستلزم آن است به نسخه ۷ به‌روزرسانی شوند.

درصد استفاده‌شده از نسخه‌های مختلف PHP در وب‌سایت‌ها

حال به بررسی ویژگی‌های PHP 7 می‌پردازیم.

۱- نام PHP 7 (نه ۶)

همان‌طور که گفته شد، آخرین نسخه پایدار که اکثر سایت‌ها استفاده می‌کنند، در حال حاضر نسخه PHP 5.6 می‌باشد. پس از چندین اختلاف، تیم توسعه تصمیم گرفتند نام PHP 6 را برای انتشار بعدی حذف کنند. PHP 6 قبلاً به عنوان یک پروژه آزمایشی وجود داشت امّا هرگز به مرحله تولید نرسید. برای جلوگیری از مخلوط‌کردن تلاش سابق با آخرین توسعه، نسخه جدید تحت نام PHP 7 اجرا شد.

۲- موتور جدید Zend با نام تجاری جدید

Zend موتور قدرتمند PHP را از سال ۱۹۹۹ تا زمانی که با نسخه جدید PHP 4 معرفی شده بود، فعال نگه داشته است. موتور Zend – با فریم‌ورک Zend اشتباه گرفته نشود – موتور اجرایی منبع باز است که به زبان C نوشته شده است و زبان PHP را تفسیر می‌کند. PHP 7 از یک نسخه جدید از موتور مفسر با نام (PHP#NG (Next Generation استفاده می‌کند.

۳- دو برابر شدن سرعت

یکی از مهمترین مزیت‌های موتور PHPNG، بهبود قابل توجه در عملکرد است. تیم توسعه PHPNG موتور Zend را بهبود بخشیدند و به طور قابل توجهی استفاده از حافظه را بهینه‌سازی کردند.

نتایج؟ شما می‌توانید معیارهای عملکرد ارائه شده توسط تیم Zend Performance Team را در زیر مشاهده کنید. با استفاده از PHP 7 نه تنها کد شما سریعتر اجرا خواهد شد، بلکه شما نیاز به سرورهای کمتری برای خدمت به همان مقدار از کاربران دارید.

تست اجرای وردپرس ۴ بر روی PHP با نسخه‌های مختلف (talks php)

۴- آسان‌شدن مدیریت خطا

می‌توان گفت مدیریت خطاهای Fatal و برطرف‌کردن آن‌ها برای برنامه‌نویسان و توسعه‌دهندگان PHP هرگز کار ساده‌ای نبوده است. ویژگی جدید Engine Exception به شما این امکان را خواهد داد که این نوع اشتباهات را با استثناء جایگزین کنید. اگر استثناء پیدا نشود، پی‌اچ‌پی همچنان همان خطاهای Fatal که در نسخه‌های ۵ بوده، نمایش خواهد داد.

توسعه‌دهندگان و برنامه‌نویسان PHP

اشیاء new\EngineException، کلاس پایه Exception را توسعه نمی‌دهد. برای اجازه‌دادن به توسعه‌دهندگان و برنامه‌نویسان برای استفاده از هر دو، PHP 7 کلاس مشترک جدیدی به نام BaseException\ معرفی کرده است.

try{
call_method(null); // oops!
}
catch(EngineException $e) {
	echo "Exception : {$e->getMessage()}\n";
}

۵- پشتیبانی از سیستم‌عامل‌های ۶۴ بیتی

PHP یک عضو برجسته از LAMP Stack است، به این معنی که محیط اصلی آن لینوکس است امّا قابلیت اجرا بر روی سیستم‌عامل‌های ویندوزی را داراست. پی‌اچ‌پی در نسخه‌های مختلف ۵ پشتیبانی صحیحی از ویندوز ۶۴ بیتی یا فایل‌های بزرگ ارائه نداد ولی PHP 7 این رویه را تغییر داده و با معرفی ثابت ۶۴ بیتی این امکان را فراهم کرده که بر سیستم‌عامل‌های ۶۴ بیتی هم بتوانید PHP را به راحتی اجرا کنید.

۶- فضاپیمای جدید و عملگرهای Null Coalescing

یکی از عملگرهای جدید تحت نام «اپراتور مقایسه ترکیبی» جدید معرفی می‌شود. این عملگر که علامت آن به صورت <=> است، مقایسه‌ای بوده که عملوندهای دو طرف را با هم مقایسه می‌کند: در صورتی که با هم برابر باشند مقدار صفر، در صورتی که عملوند سمت چپ بزرگتر از عملوند سمت راست باشد مقدار ۱ و در صورتی که عملوند سمت راست از سمت چپ بزرگتر باشد، مقدار ۱- را به عنوان خروجی برمی‌گرداند.
عملگرهای جدید تعریف‌شده باعث می‌شوند زمان اجرا کاهش پیدا کند.

// Fetches the request parameter user and results in 'nobody' if it doesn't exist
$username = $_GET['user'] ?? 'nobody';
// equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
 
// Calls a hypothetical model-getting function, and uses the provided default if it fails
$model = Model::get($id) ?? $default_model;
// equivalent to: if (($model = Model::get($id)) === NULL) { $model = $default_model; }
 
// Parse JSON image metadata, and if the width is missing, assume 100
$imageData = json_decode(file_get_contents('php://input'));
$width = $imageData['width'] ?? 100;
// equivalent to: $width = isset($imageData['width']) ? $imageData['width'] : 100;

۷- توانایی اعلان دقیق نوع

آیا تا به حال شده بخواهید از بازگشت مقادیر ناخواسته توسط اعلان دقیق نوع بازگشتی توسط توابع جلوگیری کنید؟ PHP 7 به توسعه‌دهندگان این امکان را خواهد داد تا کیفیت کد خود را با کمک اعلان‌های نوع بازگشتی افزایش دهند.

تابع زیر ()foo می‌باشد که قرار است که یک آرایه را به عنوان خروجی بازگرداند.

function foo(): array {
    return [];
}

برای بهبود این ویژگی، PHP 7 چهار نوع اعلان جدید bool، float، string و int را برای نوع عددی معرفی کرده است. اعلان‌های عددی به توسعه‌دهندگان اجازه می‌دهد که بتوانند نوع خروجی را که انتظار دارند، بازگشت داده شود.

۸- افزودن کلاس‌های ناشناس

در PHP 7 شما قادر به استفاده از کلاس‌های ناشناس هستید، این ویژگی قبلا در زبان‌های شی گرا همانند #C و جاوا وجود داشت. کلاس ناشناس یک کلاس بدون نام بوده و شیء ای که در این کلاس تعریف می‌شود دارای همان عملکردی که یک شی در کلاس دارای نام دارد، می‌باشد. تعریف این نوع هم همانند کلاس‌هایی است که در PHP تعریف می‌شوند، با این تفاوت که در اینجا نام برداشته شده است. این کلاس برای مواردی استفاده می‌شود که فقط یک بار نیاز به اجرا می‌باشد. اگر کلاس‌های ناشناس، به خوبی تعریف شوند، سرعت اجرای کد بالا خواهد رفت. نمونه‌ای از یک کلاس ناشناس را در زیر مشاهده کنید.

var_dump(new class($i) {
    public function __construct($i) {
        $this->i = $i;
    }
});

۹- سادگی ورود از فضای نام

اعلان گروهی use یا ویژگی Group Use Declarations برای کسانی که نیاز به واردکردن بسیاری از کلاس‌ها از فضای نام یکسان دارند، بسیار مفید و ارزشمند خواهد بود. نگارش جدید، کد شما را ساده و روان نشان داده و در زمان تایپ کد، صرفه‌جویی خواهد کرد. همچنین خواندن کدها و اشکال‌زدایی آن‌ها ساده‌تر خواهد بود چون ویژگی Group Use Declarations کمک می‌کند که ورودی‌های مربوط به همان ماژول به راحتی شناسایی شوند.

// Proposed group use syntax:
 
use FooLibrary\Bar\Baz\{ ClassA, ClassB, ClassC, ClassD as Fizbo };
 
// Compared to current use syntax:
 
use FooLibrary\Bar\Baz\ClassA;
use FooLibrary\Bar\Baz\ClassB;
use FooLibrary\Bar\Baz\ClassC;
use FooLibrary\Bar\Baz\ClassD as Fizbo;

۱۰- خالی‌کردن فضا

هدف از PHP 7 علاوه بر بهبود بخشیدن به اجرا، بهبود بخشیدن به فضا نیز هست. بنابر این موضوع لازم بود تا بسیاری از توابع قدیمی و ویژگی‌های منسوخ شده به طور کلی در این نسخه حذف شوند. اگر می‌خواهید از جزئیات حذف‌شده در این نسخه باخبر شوید، اینجا و اینجا را بخوانید.
در صورتی که یک توسعه‌دهنده هستید حتماً لیست بالا را بررسی کنید تا توابع منسوخ را بازنویسی کنید.

به خاطر داشته باشید، وردپرس یکی از سیستم‌های مدیریت محتواست که به نسخه PHP وابسته است. در صورتی که نسخه PHP شما به‌روز باشد، خواه ناخواه در امنیت وردپرس شما تأثیرگذار خواهد بود. در صورتی که امنیت وردپرس برایتان مهم است، کافی فرم امن‌سازی وردپرس را پر کنید و امنیت وردپرس خود را به ما بسپارید. تیم تیدا وب این کار را برای شما انجام خواهد داد.

منبع : hongkiat

ارسال دیدگاه