Кои са премахнатите deprecated функционалности в дългоочакваната PHP 7 версия?

Кои са премахнатите deprecated функционалности в дългоочакваната PHP 7 версия?

След като вече писахме за излизането на новата официална версия на PHP 7, идва ред да Ви запознаем с премахнатите deprecated функционалности в новия релийз. Вижте в нашата статия кои тагове вече не можете да използвате и научете с какво да ги замените. Поредна доза PHP лудост гарнирана с много символи и малко суха материя :)

Функционалностите са маркирани като deprecated, за да се предупредят програмистите, че те ще бъдат премахнати в последващи рилийзи и не е препоръчително да се използват.

.Какви са deprecated функционалностите, които са премахнати в тази версия?

.

  1. Премахнати са алтернативните ASP и script тагове за отваряне и затваряне на php code.

Заменете тага script и ASP таговете („<%“, „<%=“ и „%>“) със стандартните PHP тагове: „<?php“, „<?=“, и „?>“

.

  1. Премахнато е цялото ext/ereg разширение.

Това включва следните функции:

  • ereg()
  • eregi()
  • ereg_replace()
  • eregi_replace()
  • split()
  • spliti()
  • sql_regcase()

Препоръчва се мигрирането на съвместими с perl регулярни изрази (Perl Compatible Regular Expressions (PCRE)), т.е. трябва да превключите на използването на preg_ семейството от функции, което включва и повече функционалности:

preg_filter — Извършва се търсене и замяна на регулярни изрази

preg_grep — Връща елементи от масива, които съответстват на модела

preglasterror — Връща кода за грешка от последното PCRE regex изпълнение

pregmatchall — Изпълнява съответствие на общия регулярен израз

preg_match — Изпълнява съответствие между регулярните изрази

preg_quote — Цитира символите на регулярните изрази

pregreplacecallback_array — Изпълнява търсене на регулярен израз и го замества, използвайки callback-ове

pregreplacecallback — Изпълнява търсене на регулярен израз и го замества, използвайки callback

preg_replace — Изпълнява търсене на регулярен израз и заместване

preg_split — Разделя string-а с регулярен израз

.

  1. Премахнати са Multiple Default Cases в в switch командата

Когато са създавани PHP спецификациите на езика, беше открит бъг: можеше да се дефинира множество случаи по подразбиране (default: cases) в switch командата, като в този случай само последният ще бъде изпълнен. Но този случай може да доведе до потенциални и трудни за откриване грешки. За да бъде разрешен този казус, възможността за дефинирането на случаи по подразбиране бе премахната в новата версия и ще получите съобщение за грешка:

Fatal error: Switch statements may only contain one default clause

.

  1. Премахване на оригиналното MySQL разширение – Това включва всички mysql_ функции. Това може би е най-голямата промяна, която ще настъпи във Вашия съществуващ код, ако използвате тези функции.

  2. Мигриране към Procedural mysqli.

Най-лесният път за миграция е да превключите към процедурни mysqli_ функции, които са част от ext/mysqli разширението.

В повечето случаи всичко, което трябва да направите, е да смените името на функцията и да подадете още 1 параметър на mysqli_connect за избиране на точната база данни.

Можете да видите по-долу списък с ext/mysql функциите, които не съответстват с ext/mysqli:

mysqlclientencoding() mysqllistdbs() (използвайте SHOW DATABASES query)

mysqldbname() mysqllistfields()

mysqldbquery() mysqllistprocesses() (използвайте SHOW PROCESSLIST query)

mysqldbname() mysqllist_tables() (използвайте SHOW TABLES query)

mysqlfieldflags() mysql_listdbs() (използвайте SHOW DATABASES query)

mysqlfieldlen() mysql_listfields()

mysqlfieldname() mysql_listtables() (използвайте SHOW TABLES query)

mysqlfieldtable() mysql_numfields()

mysqlfieldtype() mysqlnumrows() (използвайте вместо това mysqlinum_rows())

mysqlfieldflags() mysqlpconnect() (append p: to the hostname passed to mysqli_connect())

mysqlfieldlen() mysqlresult()

mysqlfieldname() mysqlselectdb() (use mysqliselectdb() instead)

mysqlfieldtable() mysqltable_name()

mysqlfieldtype() mysqltablename()

mysqlfreeresult() (използвайте mysqlunbuffered_query()

вместо това mysqlifreeresult())

  • Мигриране към обектно ориентирано API – има два варианта да мигрирате към обектно ориентирано API по същото време, когато мигрирате от ext/mysql :

Единият начин е мигрирайки към ext/mysqli разширението, което ще осигури освен процедурно и обектно ориентирано API

Вторият начин е PHP Data Objects (познато като PDO разширение) или ext/pdo с ext/pdo_mysql.

Използване на PDO

PDO разширението Ви позволява да се свържете с различни видове бази данни, използвайки главно общо API. Тъй като PDO е абстракция за доста видове бази данни, ще можете да използвате само едно API, за да работите с доста видове бази данни, вместо различно API за всяка.

Използване на Mysqli

Интерфейсът на mysqli обектно-ориентираните разширения е доста различен от PDO. Mysqli поддържа само анонимни placeholder-и (означени с въпросителен знак "?"), отколкото именовани placeholder-и и изисква от Вас да обвържете променливите изрично към всеки placeholder. Също така не хвърля изключения при грешки.

.

  1. Премахнати SAPI-та (сървър разширения) във версия 7:

  2. aolserver

  3. apache

  4. apache_hooks

  5. apache2filter

  6. caudium

  7. continuity

  8. isapi

  9. milter

  10. nsapi

  11. phttpd

  12. pi3web

  13. roxen

  14. thttpd

  15. tux

  16. webjames

.

Кои са депрекираните функции във версия 7?

Имайте предвид, че следните функции са маркирани като deprecated във версия 7 на PHP и не е препоръчително да ги използвате:

  • PHP 4 style constructors

PHP 4 стиловите конструктори ще бъдат премахнати в бъдеще и затова те са маркирани като депрекирани. При инициализацията на клас, ако съществува функция със същото име, ще се върне Deprecated грешка, тъй като в бъдеще автоматичното извикване на подобни функции ще бъде премахнато. За да можете да използвате автоматичното извикване на функция, трябва да ползвате ключоватата дума „__construct()“.

  • Static calls to non-static methods

Статични извиквания на методи, които не са декларирани като статични са deprecated и ще бъдат премахнати в бъдеще.

  • password_hash() salt option

"Посоляващата" опция на функцията password_hash() се маркира като депрекирана, за да се попречи на програмистите да генерират свои прекалено лесни и често несигурни "ключове". При тази функция има вградено генериране на ключ за "посоляване" на паролата, за да се създаде криптографски сигурна парола. Затова допълнителната salt опция става излишна и това води до нейното депрекиране и последващо премахване.

От екипа на ICN.Bg оставаме насреща за всички въпроси, които имате за новата версия на PHP и ще продължаваме да Ви даваме "свежа" информация за най-популярния език за програмиране в света!

.

Прочетете още:

WordPress и PHP 7 - как тази комбинация ще промени облика на Интернет?

Особеностите на новата версия PHP 7

WordPress 4.4 - какви са характеристиките на последния голям релийз?

Етикети: #funktsii #php7 #api #депрекиране #pdo #mysqli #functions #deprecated #sapi