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 zval5. 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ètres7. 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 nulleExemple direct : $name = $name ?? "NoName"; // 如果$name有值就取其值,否则设$name成"NoName"
Forme : (expr) <=> (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);
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...
$goo = [ "bar" => [ "baz" => 100, "cug" => 900 ] ]; $foo = "goo"; $$foo["bar"]["baz"]; // 实际为:($$foo)['bar']['baz']; PHP 5 中为:${$foo['bar']['baz']}; // PHP 7 中一个笼统的判定规则是,由左向右结合。
$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; }
use PHPGoodTaste\Utils\{ Util, Form, Form\Validation, Form\Binding };
Fonction/méthode : publique, privée, protégée, abstraite, finale
Classe : abstraite, finale
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 { // ... }
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"; }
$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]);
$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!