Kürzlich stimmte das PHP-Entwicklungsteam über eine neue veraltete Version von PHP 7.4 ab, die Ende November veröffentlicht werden soll. Jetzt ist die erste Beta-Version mit festem Funktionsumfang erschienen. Die aktuelle Version bietet nicht nur neu ausgewählte Deprecations, sondern auch einige BugFix.
Das PHP-Entwicklungsteam hat die erste Beta-Version von PHP 7.4 veröffentlicht. Dies bestimmt die Funktionalität. PHP 7.4beta1 bringt neben neuen Deprecations auch einige BugFixes. Wir arbeiten an Änderungen für die neue Version.
PHP 7.4beta1 weist neue veraltete Versionen auf
Zuvor erlaubte PHP die austauschbare Verwendung von eckigen Klammern und geschweiften Klammern, um auf Array-Elemente und String-Offsets zuzugreifen. Beispiel aus PHPs internem PHP RFC zur Veranschaulichung:
$array = [1, 2]; echo $array[1]; // prints 2 echo $array{1}; // also prints 2 $string = "foo"; echo $string[0]; // prints "f" echo $string{0}; // also prints "f"
Dieser Teil sorgt für Verwirrung und Probleme. Beispielsweise können geschweifte Klammern nicht zum Schreiben von Elementen in ein Array verwendet werden:
$array[] = 3; echo $array[2]; // prints 3 $array{} = 3; // Parse error: syntax error, unexpected '}'
Arrays können nicht mit der Syntax für geschweifte Klammern erstellt werden:
$array = [1, 2]; // works $array = {1, 2}; // Parse error: syntax error, unexpected '{'
Es stellt sich heraus, dass die Verwendung für die Listenzuordnung schwierig ist :
[$one, $two] = $array; // works {$one, $two} = $array; // Parse error: syntax error, unexpected ','
Aus diesem Grund ist die Syntax für geschweifte Klammern jetzt als veraltet markiert und wird daher nicht empfohlen, wenn Array- oder String-Offsets aus der veröffentlichten Beta verwendet werden.
PHP 7.4 Beta 1 bringt weitere Abwertungen mit sich, über die das PHP-Entwicklungsteam letzte Woche abgestimmt hat. 14 der dort aufgeführten Methoden waren in PHP 7.4 veraltet:
真正的类型 魔术引用遗产 array_key_exists()包含对象 FILTER_SANITIZE_MAGIC_QUOTES过滤器 反射export()方法 mb_strrpos(),编码为第三个参数 implode()参数顺序组合 从非静态闭包中取消绑定$ this hebrevc()函数 convert_cyr_string()函数 money_format()函数 ezmlm_hash()函数 restore_include_path()函数 allow_url_include ini指令
In PHP 7.4beta1 waren alle genannten Methoden veraltet und wurden schließlich in Version 8.0 entfernt.
BugFix in PHP 7.4beta1
Zusätzlich zu den oben genannten Verwerfungen hat die Beta-Version auch einige Fehlerbehebungen vorbereitet. Den Versionshinweisen zufolge liegt ein Segmationsfehler im integrierten Webserver vor. Dieses Problem sollte mit dieser Beta gelöst werden.
Ein weiteres Problem entsteht, wenn PHP über CGI ausgeführt wird. PHP sucht nach einem Shebang (#!). Wenn in der ersten Zeile ein Hash steht, prüft PHP nicht, ob das Folgende ein Ausrufezeichen ist, es also eine Kombination aus Hash und Ausrufezeichen (#!) ist. Laut Fehlerbericht hat PHP die entsprechenden Zeilen übersprungen und den PHP-Code ignoriert.
Test script: --------------- #<!--?php echo "Hello World\n"; ?--> Second line. Expected result: ---------------- X-Powered-By: PHP/5.3.3-7+squeeze3 Content-type: text/html #Hello World Second line. Actual result: -------------- X-Powered-By: PHP/5.3.3-7+squeeze3 Content-type: text/html Second line.
Darüber hinaus gibt es einen Fehler, bei dem PHP das erste Byte des Programms frisst, wenn es aus einer Prozessersetzung stammt (Fehler #78066). Die erste Beta-Version behebt diesen Fehler. Weitere Informationen zur aktuellen Version finden Sie in den Versionshinweisen.
Auf Beta1 folgt Beta2
PHP 7.4 soll am 28. November veröffentlicht werden. Nach der ersten Beta-Version wird PHP 7.4beta2 am 8. August 2019 veröffentlicht. Den Zeitplan für PHP 7.4 finden Sie im PHP-Wiki.
Dieser Artikel wurde übersetzt von: https://entwickler.de/online/php/php-7-4beta1-deprecations-579902190.html