Introduction aux nouvelles fonctionnalités telles que les classes anonymes, les classes importées et l'utilisation de la fermeture dans php7

伊谢尔伦
Libérer: 2023-03-11 15:10:01
original
2457 Les gens l'ont consulté

Classe anonyme (PHP 7)

Prend désormais en charge l'instanciation d'une classe anonyme via une nouvelle classe, qui peut être utilisée pour remplacer certaines "utilisations" définition de classe complète de « Incinération ».

<?php
interface Logger {
 public function log(string $msg);
}

class Application {
 private $logger;

 public function getLogger(): Logger {
   return $this->logger;
 }

 public function setLogger(Logger $logger) {
   $this->logger = $logger;
 }
}

$app = new Application;
$app->setLogger(new class implements Logger {
 public function log(string $msg) {
  echo $msg;
 }
});

var_dump($app->getLogger());
?>
Copier après la connexion

La routine ci-dessus affichera :

object(class@anonymous)#2 (0) {
}

Closure::call() (PHP 7)

Closure::call() a désormais de meilleures performances, lie de manière concise et temporaire une méthode à < Closure on 🎜> Objet et appelez-le.

<?php
class A {private $x = 1;}

// Pre PHP 7 code
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, &#39;A&#39;); // intermediate closure
echo $getX();

// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new A);
Copier après la connexion
La routine ci-dessus affichera :

1

1

Fournir un filtrage pour unserialize() (PHP 7)

Cette fonctionnalité est conçue pour fournir un moyen plus

sûr de décompresser des données peu fiables. Il empêche l’injection potentielle de code via la liste blanche.

<?php
// converts all objects into PHP_Incomplete_Class object
$data = unserialize($foo, ["allowed_classes" => false]);

// converts all objects into PHP_Incomplete_Class object except those of MyClass and MyClass2
$data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]);

// default behaviour (same as omitting the second argument) that accepts all classes
$data = unserialize($foo, ["allowed_classes" => true]);
Copier après la connexion

Déclarations d'utilisation de groupe (PHP 7)

Les classes, fonctions et

constantes importées depuis le même espace de noms peuvent désormais être Une déclaration à usage unique est importée en une seule fois.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!