Maison  >  Article  >  développement back-end  >  Introduction aux nouvelles fonctionnalités telles que les classes anonymes, les classes importées et l'utilisation de la fermeture dans php7

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

伊谢尔伦
伊谢尔伦original
2017-06-27 09:58:012593parcourir

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());
?>

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 à 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);
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]);

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!

Déclaration:
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