Autres modifications au niveau de la langue


1. L'appel de méthodes non statiques de manière statique dans un contexte $this non compatible ne sera plus pris en charge.

L'appel statique de méthodes non statiques dans un contexte $this non compatible ne sera plus pris en charge. Dans ce scénario, $this ne sera pas défini, mais l'appel peut toujours être effectué, mais il y aura un avertissement :

class A {
  public function test() { var_dump($this); }
}

// Note: Does NOT extend A
class B {
  public function callNonStaticMethodOfA() { A::test(); }
}

(new B)->callNonStaticMethodOfA();

// Deprecated: Non-static method A::test() should not be called statically
// Notice: Undefined variable $this
NULL

Notez que cette situation s'applique aux appels dans des contextes incompatibles. Dans l'exemple de code ci-dessus, la classe B et la classe A n'ont aucune relation, donc $this n'est pas défini lors de son appel.

Mais si la classe B hérite de la classe A, l'appel est légal.

2. Les mots réservés suivants ne peuvent pas être utilisés comme noms de classe, noms d'interface et noms de traits.

bool
int
float
string
null
false
true
Les mots-clés suivants ont été réservés pour une utilisation future et peuvent actuellement être utilisés sans erreur, mais ne sont pas recommandés.
resourceobject
mixed
numeric

3. Ajustement de la syntaxe de rendement

Lors de l'utilisation de la structure de syntaxe de rendement dans une expression, les parenthèses ne sont plus nécessaires. Il s'agit désormais d'un opérateur associatif à droite avec priorité entre les opérateurs "print" et "=>". Dans certains scénarios, le comportement sera incompatible avec celui d'avant.

echo yield -1;
echo (yield) - 1;  // 之前的语法解释行为
echo yield (-1);   // 现在的语法解释行为

yield $foo or die;
yield ($foo or die);  // 之前的语法解释行为
(yield $foo) or die;  // 现在的语法解释行为

L'ambiguïté peut être évitée en utilisant des parenthèses.

Remarque : Concernant le rendement, vous pouvez vous référer à cet article de Bird Brother : http://www.laruence.com/2012/08/30/2738.html

Quelques autres ajustements

Suppression du support du format ASP. et prise en charge de la syntaxe de script : <% et <script language=php>

ne prennent plus en charge l'affectation de référence au résultat de new. (Merci à Gazhikaba pour le partage de la traduction)

Suppression des appels de portée aux méthodes non statiques dans des contextes $this non compatibles. Documents de référence : https://wiki.php.net/rfc/incompat_ctx http://www.laruence.com/2012/06/14/2628.html

Les fichiers Ini ne prennent plus en charge les commentaires commençant par #, utilisez ; .

La variable $HTTP_RAW_POST_DATA a été supprimée, utilisez plutôt php://input. https://wiki.php.net/rfc/remove_alternative_php_tags