PHP 5.3: Основни нововъведения
PHP 5.3 е първата голяма модернизация в клона 5.x: пространства от имена, късно статично свързване (static::), затваряния с use, ограничен goto, NOWDOC, по избор събиране на циклични връзки, Phar и подобрения в разширенията (mysqlnd, intl, openssl). Езикът се стяга: изчезва предаване по референция в мястото на извикването, ereg* са deprecated, нови ключови думи могат да счупят стари имена на константи.
Изходна точка: migration53.
Съдържание
- Пространства от имена
- Късно статично свързване
- Затваряния
goto, NOWDOC,const- GC за цикли
- Phar, intl, драйвери
- Рецепти
- Обратна несъвместимост
- Deprecated
- Друго
Пространства от имена
namespace App\Model;
use App\Db\Connection;
class UserRepository
{
private $db;
public function __construct(Connection $db)
{
$this->db = $db;
}
}
Късно статично свързване
static:: се разрешава спрямо фактическия клас при наследяване; self:: остава към класа на декларацията.
Затваряния
Анонимни функции с use улавят променливи от обкръжението — основа за колбеци преди $this в затваряния (PHP 5.4).
goto, NOWDOC, const
NOWDOC не интерполира $променливи. const на ниво файл е поддържан в именовани пространства.
GC за цикли
gc_collect_cycles() и настройките gc_enable/gc_disable помагат при дълго живеещи процеси и ORM графи.
Phar, intl, драйвери
Phar пакетира приложение в един архив. intl дава ICU форматиране. Пълен списък: migration53 new-features.
Рецепти
Заменете ereg* с preg_*. Въвеждайте namespace на модули, не за един ден.
Обратна несъвместимост
migration53 incompatible: нови ключови думи, премахнато предаване по референция при извикване, deprecated части от mysql, промени в SAPI под Windows.
Deprecated
ereg*, стар SQLite2, mime_magic — migration53 deprecated.
Друго
Не разчитайте на safe_mode за сигурност. Прегледайте INI след ъпдейт на пакета.
Обобщение
PHP 5.3 отваря пътя към модерна структура на кода в 5.x. Премахнете ereg* и call-time references — след това преходите към 5.4+ и PHP 7 са по-гладки.