با پیدا شدن سر و کله ی تغییرات PHP 7.3 سر و صدایی به پاکرد و ویژگی های جدید خودش را به رخ کشید. اگر PHP کار یا طراح سایت هستید باید همیشه به روز باشید و اطلاعات خود را آپدیت نگه دارید.
همچنین PHP 7.3 نیز یک آپدیت خوب از PHP محسوب می شود؛
زیرا سرعت آن به مقدار قابل توجهی از PHP 7.2 افزایش یافته که می تواند به درخواست های بیشتری پاسخ دهد.
به دنبال آن رم کمتری را از سرور مصرف و در نهایت باعث کاهش هزینه های سرور و هاستینگ می شود.
اگر می خواهید در زمینه برنامه نویسی PHP یا طراحی وب سایت به روز باشید، باید همواره خود را آپدیت نگه دارید.
پس در این مقاله ۷ دقیقه ای ” ویژگی های جدید PHP 7.3 ” با ما همراه باشید.
دسته بندی تغییرات PHP 7.3 :
Syntax
Deprecations
New features
Changes
New Global Constants
قابل ذکر است که بخشی از تغییرات PHP 7.3 ، مربوط به Syntax برنامه نویسی می باشد.
استفاده از Refrence در تابع ()list :
همانطور که می دانید از تابع ()list جهت اختصاص دادن مقادیر یک آرایه به ، مقادیر متغیر ها مورد استفاده قرار می گیرد.
قبل از پیدا شدن سر و کله ی PHP 7.3 امکان پاس دادن متغیر ها با Refrence ها وجود نداشت.
به مثال زیر توجه کنید :
$arr = ['security', 'ceh']; list($a, &$b) = $arr; $b = 'iran123'; echo $arr[1]; // iran123
استفاده از کاما در فراخوانی توابع :
در این جا نیز می توانید هنگام فراخوانی توابع ، و در قسمت پارامتر های آن، از کاما (,) استفاده کنید.
حتما توجه داشت باشید که از این ویژگی نمی توانید در هنگام تعریف توابع استفاده کنید!
car('Benz', 'BMW',);
بهبود ساختار Heredoc و Nowdoc :
از این ساختار برای نگهداری رشته های چند خطی استفاده می شود.
چیزی که باید بدانید این است که IDENTIFIER حتما باید در ابتدا و انتهای خط باشد.
یعنی اینکه قبل از آن هیچ گونه کاراکتری مانند Space یا Tab نباید باشد.
$foo = <<<IDENTIFIER This is simple of heredoc and nowdoc syntax "foo" bar; IDENTIFIER
اما در تغییرات PHP 7.3 این محدودیت از بین رفته است و می توانید با استفاده از تو رفتگی ها ، پاراگراف های خود را زیبا تر کنید.
$foo = ['php', '7.3', <<<EOT foo - hello world! -- bar EOT, 'snippets', 'ir' ]; var_dump($foo);
دیگر لازم نیست که حتما IDENTIFIER پایانی در ابتدای خط باشد.
زیرا PHP به طور خودکار فواصل اعمال شده در IDENTIFIER پایانی را حذف می کند.
همچنین می توانید از Sapce و Tab پاراگراف های خود و IDENTIFIER استفاده کنید.
اما برای استفاده از تو رفتگی ها باید یا از Space یا از Tab استفاده کنید.
منسوخ شدن تابع ()image2wbmp :
تابع ()image2wbmp از GD Extenstion جهت خروجی گرفتن تصویری در فرمت (Wireless Bitmap) WBMP استفاده می شود.
اگر شما از این function استفاده می کنید ، این function دیگر منسوخ شده است.
در مقابل PHP تابع ()imagewbmp را با کارایی و عملکرد بهتری جایگزین آن کرده است.
معرفی توابع array_key_first و array_key_last :
با اینکه در PHP بیش از ۷۵ تابع جهت کار با آرایه ها وجود دارد ،
اما هنوز برای اینکه کلید های عنصر های اول و آخر آرایه را استخراج کنید لازم است تابعی برای خود بنویسید.
در PHP7.3 به راحتی می توانید با استفاده از توابع معرفی شده کلید های ابتدا و انتهای آرایه را استخراج کنید.
منسوخ شدن Flag های FILTER_FLAG_SCHEME_REQUIRED و FILTER_FLAG_HOST_REQUIRED در FILTER_VALIDATE_URL :
هنگامی که از تابع ()filter_var قبل از PHP 7.3 جهت اعتبار سنجی URL ها استفاده می کردیم؛
برای محکم کاری بیشتر از پرچم های (Flag) FILTER_FLAG_HOST_REQUIRED و FILTER_FLAG_SCHEME_REQUIRED در کنار آن استفاده می کردیم.
در صورتی که در نسخه های جدید ، PHP به طور خودکار این پرچم (Flag) ها را اضافه می کند.
پس دیگر نیازی نیست از آن ها استفاده کنید.
منقضی شدن ثابت های غیرحساس به حروف کوچک و بزرگ :
در مورد ثابت ها در PHP 7 مفصلاً در مقاله ی قبل باهم صحبت کردیم.
همانطور که در مقاله ی قبلی به آن اشاره کردیم ، جهت کنترل حالت حساس بودن به بزرگی و کوچکی حروف
(Case Sensitive) در ()Define با استفاده از پارامتر سوم آن را کنترل می کردیم.
اما در PHP 7.3 این پارامتر حذف شده و تمامی ثابت ها به حروف کوچک و بزرگ حساس (Case Sensitive) هستند.
اگر ثابت هایی این چنینی در برنامه خود تعریف کرده اید ، پس باید حتماً آن ها را ویرایش کنید.
کنترل خطا ها در توابع json_encode و json_decode :
از این پس می توانید هنگام استفاده و کار با توابع Json برای خود Exception Message تعریف کنید :
try { json_decode("{", false, 512, JSON_THROW_ON_ERROR); } catch (\JsonException $exception) { echo $exception->getMessage(); // echoes "Syntax error" }
معرفی تابع is_countable در PHP 7.3 :
در نسخه های قبلی PHP هنگامی که یک متغیر غیر قابل شمارش را به تابع ()count پاس می دادیم،
با خطا مواجه می شدیم.
اما در PHP 7.3 قبل از اینکه متغیر را به تابع ()count پاس بدهیم،
می توانیم قابل شمارش بودن آن را با تابع ()is_countable بررسی کنیم تا برنامه ما با خطا مواجه نشود.
توابع جدید Socket در تغییرات PHP 7.3 :
socket_wsaprotocol_info_export()
socket_wsaprotocol_info_import()
socket_wsaprotocol_info_release()
…
ثابت های جهانی جدید (Global Constance) :
لیست ثابت های جهانی اضافه شده به تغییرات PHP 7.3 بلند بالا است. لذا سعی کردیم مهم ترین آنها را به شما معرفی کنیم.
Client URL Library
CURL_VERSION_HTTPS_PROXY
CURLPROXY_HTTPS
CURLOPT_SUPPRESS_CONNECT_HEADERS
CURLOPT_SSH_COMPRESSION
CURLOPT_SOCKS5_AUTH
CURLOPT_PROXY_SSLVERSION
CURLOPT_PROXY_TLSAUTH_PASSWORD
CURLOPT_PROXY_SSL_OPTIONS
CURL_MAX_READ_SIZE
CURLINFO_HTTP_VERSION
CURLINFO_PROTOCOL
CURL_LOCK_DATA_CONNECT
CURLE_WEIRD_SERVER_REPLY…
آپدیت PCRE به PCRE2 :
PHP جهت استفاده از عبارات قانونی یا Regular Expressions از کتابخانه PCRE (Perl Compatible Regular Expressions) version 8.x استفاده می کرد.
خبر خوب این است که این کتابخانه در تغییرات PHP 7.3 به طور کلی آپدیت شده ،همچنین ساختار و عملکرد آن نیز بهبود یافته است.
همچنین PHP در این مورد سخت گیرانه عمل می کند. کد زیر در PHP 7.3 با خطا مواجه می شود :
preg_match('/[\w-.]+/', '');
و باید آن را در PHP 7.3 به این صورت استفاده کرد :
preg_match('/[\w\-.]+/', '');