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

  by    0   1

След като вече писахме за излизането на новата официална версия на 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 — Връща елементи от масива, които съответстват на модела

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

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

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

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

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

preg_replace_callback — Изпълнява търсене на регулярен израз и го замества, използвайки 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_ функции. Това може би е най-голямата промяна, която ще настъпи във Вашия съществуващ код, ако използвате тези функции.
  • Мигриране към Procedural mysqli.

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

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

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

mysql_client_encoding()                           mysql_list_dbs() (използвайте SHOW DATABASES query)

mysql_db_name()                                       mysql_list_fields()

mysql_db_query()                                       mysql_list_processes() (използвайте SHOW  PROCESSLIST query)

mysql_dbname()                                          mysql_list_tables() (използвайте SHOW TABLES query)

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

mysql_field_len()                                         mysql_listfields()

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

mysql_field_table()                                     mysql_numfields()

mysql_field_type()                                       mysql_numrows() (използвайте вместо това mysqli_num_rows())

mysql_fieldflags()                                         mysql_pconnect() (append p: to the hostname passed to mysqli_connect())

mysql_fieldlen()                                            mysql_result()

mysql_fieldname()                                        mysql_selectdb() (use mysqli_select_db() instead)

mysql_fieldtable()                                         mysql_table_name()

mysql_fieldtype()                                          mysql_tablename()

mysql_freeresult() (използвайте              mysql_unbuffered_query()

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

  • Мигриране към обектно ориентирано 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. Също така не хвърля изключения при грешки.

.

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

  • aolserver
  • apache
  • apache_hooks
  • apache2filter
  • caudium
  • continuity
  • isapi
  • milter
  • nsapi
  • phttpd
  • pi3web
  • roxen
  • thttpd
  • tux
  • 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  – какви са характеристиките на последния голям релийз?

 


Подобни публикации

Каква е разликата между уеб мейл и имейл клиент?

mail-web-client-300-262В днешно време благодарение на Интернет можем да изпратим имейл от една точка на света до друга само с един клик и то за секунди. Писането и четенето на имейли е неразделна част от нашето ежедневие и съществуват много устройства, които можем да използваме за тази цел – настолни компютри, лаптопи, таблети, мобилни телефони. Освен […]


Прочети повече →

Най-добрите плъгини в WordPress – Част 1

wp-plugins-300-262-02Плъгините в WordPress са една честа тема за разговор от феновете на платформата. Кои да добавим? Кои ще са полезни за целта на уебсайта ни? Има ли плъгин, който може да реши наш конкретен проблем? В тази поредица от статии ще разгледаме едни от най-полезните WordPress плъгини, които могат да са от изключително значение за […]


Прочети повече →

Какво е уеб сайт?

web-site-300-262В днешния мобилен и технологичен свят бизнесът има силно присъствие в Интернет. Ако вие имате компания, но нямате уеб сайт, то на практика бизнесът ви се дефинира като изцяло “офлайн” и ограничавате достъпа на клиентите си до вашите продукти и услуги. Но защо да се възползвате от това да сте в Мрежата и какви са възможностите, […]


Прочети повече →

Съвети за подобряването скоростта на сайта ви

web-site-speed-300-262Преди SEO oптимизацията на сайта ви има едно важно нещо, за което е нужно да се погрижите. То е не по-малко наложащо и е от основно значение за Google ранкинга на уебсайта. Добре структурираният сайт със скоростно зареждане е от основно значение за качествения user experience. Една от първите оптимизации, които трябва да направите за […]


Прочети повече →

Подобряване производителността на сайта ви с ActiveCache – статистика и тестове

ActiveCache-300-262Статистиката ни показва, че вече голяма част от нашите клиенти са активирали ActiveCache – инструмента, който предостави бързина на сайта ви и помогна за ефективното използване на хостинг ресурсите. Производителността на тези уебсайтове се повиши благодарение на кеширащите системи, който се активират с помощта на ActiveCache – Redis и Memcached. В тази статия ще ви […]


Прочети повече →