Maison >développement back-end >PHP7 >Présentation des nouvelles fonctionnalités et de l'optimisation des performances de la comparaison php7 et PHP5

Présentation des nouvelles fonctionnalités et de l'optimisation des performances de la comparaison php7 et PHP5

coldplay.xixi
coldplay.xixiavant
2021-03-22 10:07:521991parcourir

Présentation des nouvelles fonctionnalités et de l'optimisation des performances de la comparaison php7 et PHP5

Nouvelles fonctionnalités et optimisations de performances comparant php7 et PHP5

1. )

AST joue le rôle d'un middleware dans le processus de compilation PHP, remplaçant la manière originale de cracher l'opcode directement depuis l'interpréteur, dissociant l'interpréteur (analyseur) et le compilateur (compilateur), ce qui peut réduire certains codes de piratage, en même temps, rend la mise en œuvre plus facile à comprendre et à maintenir

Recommandé (gratuit) : PHP7

2. Natice TLS :

Le partage de données de thread est sécurisé, ouvrez un thread global à utiliser comme espace mémoire partagé de données

3. Spécifiez le type de valeur de retour du paramètre

. 🎜>

4. Modifications de la structure zval

5. Gestion des exceptions

Try...catch de PHP 5. ..finalement ne peut pas gérer les erreurs traditionnelles, vous envisageriez généralement de les pirater avec set_error_handler() si nécessaire. Cependant, il existe encore de nombreux types d'erreurs qui ne peuvent pas être détectés par set_error_handler()

PHP 7 a introduit l'interface Throwable. Les erreurs et les exceptions implémentent Throwable ne peuvent pas être implémentées directement, mais les classes Exception et Error peuvent l'être. étendu. Vous pouvez utiliser Throwable pour détecter les exceptions et les erreurs. Exception est la classe de base pour toutes les exceptions PHP et utilisateur ; Error est la classe de base pour toutes les erreurs PHP internes.

6. Nouvelle méthode d'analyse des paramètres

7. Modifications de la table de hachage

les buckets et les Zvals n'attribuent plus de mémoire séparément. beaucoup de redondance inutile.

8. Opérateur de fusion nulle

Exemple direct :

$name = $name ?? "NoName";  // 如果$name有值就取其值,否则设$name成"NoName"

9.

Forme : (expr) 96b4fef55684b9312718d5de63fb7121 (expr)

Si l'opérande gauche est petit, alors - 1 si les opérandes gauche et droit sont égaux ; , 0 est renvoyé ; si l'opérande de gauche est plus grand, 1 est renvoyé ;

$name = ["Simen", "Suzy", "Cook", "Stella"];
usort($name, function ($left, $right) {
    return $left <=> $right;
});
print_r($name);
10. Constant Array

PHP 7 autorisait auparavant uniquement l'utilisation de tableaux constants dans les classes/interfaces, mais désormais PHP 7 prend également en charge les non-classes/interfaces. tableau de constantes ordinaires.

define("USER", [
  "name"  => "Simen",
  "sex"   => "Male",
  "age"   => "38",
  "skill" => ["PHP", "MySQL", "C"]
]);
// USER["skill"][2] = "C/C++";  // PHP Fatal error:  Cannot use temporary expression in write context in...
11. Syntaxe des variables unifiées

$goo = [
    "bar" => [
        "baz" => 100,
        "cug" => 900
    ]
];

$foo = "goo";

$$foo["bar"]["baz"];  // 实际为:($$foo)[&#39;bar&#39;][&#39;baz&#39;]; PHP 5 中为:${$foo[&#39;bar&#39;][&#39;baz&#39;]};
                      // PHP 7 中一个笼统的判定规则是,由左向右结合。
12. Interface jetable

C'est une introduction intéressante à PHP 7. les nouvelles fonctionnalités attendues amélioreront considérablement les capacités de gestion des erreurs de PHP. PHP 5 try ... catch ... ne peut finalement pas gérer les erreurs traditionnelles, vous envisagerez donc généralement de le pirater avec set_error_handler() si nécessaire. Mais il existe encore de nombreux types d’erreurs que set_error_handler() ne peut pas détecter. PHP 7 introduit l'interface Throwable. Les erreurs et exceptions implémentent Throwable. Throwable ne peut pas être implémenté directement, mais les classes Exception et Error peuvent être étendues. Vous pouvez utiliser Throwable pour détecter les exceptions et les erreurs. Exception est la classe de base pour toutes les exceptions PHP et utilisateur ; Error est la classe de base pour toutes les erreurs PHP internes.

$name = "Tony";
try {
    $name = $name->method();
} catch (\Error $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
}

try {
    $name = $name->method();
} catch (\Throwable $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
}

try {
    intp(5, 0);
} catch (\pisionByZeroError $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
}
13. Utiliser l'instruction combinée

Utiliser l'instruction combinée peut réduire la redondance d'utilisation des entrées. " |" à réaliser.

use PHPGoodTaste\Utils\{
    Util,
    Form,
    Form\Validation,
    Form\Binding
};
15. Modifications des modificateurs de visibilité

Les constantes de classe avant PHP 7.1 ne sont pas autorisées à ajouter des modificateurs de visibilité. À l'heure actuelle, la visibilité des constantes de classe est équivalente à. le public. PHP 7.1 ajoute la prise en charge des modificateurs de visibilité pour les constantes de classe. En général, la plage d'utilisation des modificateurs de visibilité est la suivante :

Fonction/méthode : publique, privée, protégée, abstraite, finale

Classe : abstraite, finale

    Propriétés/variables : publique, privée, protégée
  • Constantes de classe : publique, privée, protégée
  • try {
          throw new LengthException("LengthException");
        //   throw new pisionByZeroError("pisionByZeroError");
        //   throw new Exception("Exception");
    } catch (\pisionByZeroError | \LengthException $e) {
        echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
    } catch (\Exception $e) {
        echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
    } finally {
        // ...
    }
  • pseudo-type itérable
PHP 7.1 a introduit le pseudo-type itérable. Le type itérable s'applique aux tableaux, générateurs et objets qui implémentent Traversable, qui est un nom de classe réservé en PHP.

class YourClass 
{
    const THE_OLD_STYLE_CONST = "One";

    public const THE_PUBLIC_CONST = "Two";
    private const THE_PRIVATE_CONST = "Three";
    protected const THE_PROTECTED_CONST = "Four";
}
Type nullable

PHP 7.1 a introduit les types nullables. Regardez l'une des fonctionnalités gadgets du nouveau langage de programmation Kotlin: les types nullables. PHP s'apparente de plus en plus à un "langage fortement typé". Pour les exigences obligatoires du même type, vous pouvez définir si elles sont nullables.

$fn = function (iterable $it) : iterable {
    $result = [];
    foreach ($it as $value) {
        $result[] = $value + 1000;
    }
    return $result;
};

$fn([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
Type de retour Void

PHP 7.1 a introduit le type de retour Void.

$fn = function (?int $in) {
    return $in ?? "NULL";
};

$fn(null);
$fn(5);
$fn();  // TypeError: Too few arguments to function {closure}(), 0 passed in ...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer