Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in neue Funktionen wie anonyme Klassen, importierte Klassen und die Verwendung von Schließungen in PHP7

Einführung in neue Funktionen wie anonyme Klassen, importierte Klassen und die Verwendung von Schließungen in PHP7

伊谢尔伦
伊谢尔伦Original
2017-06-27 09:58:012592Durchsuche

Anonyme Klasse (PHP 7)

Unterstützt jetzt die Instanziierung einer anonymen Klasse durch eine neue Klasse, die verwendet werden kann, um einige „use The“ zu ersetzen vollständige Klassendefinition von „Verbrennung“.

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

Die obige Routine gibt Folgendes aus:

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

Closure::call() (PHP 7)

Closure::call() hat jetzt eine bessere Leistung und ist eine kurze und prägnante Möglichkeit, eine Methode vorübergehend an zu binden Objekt und rufen Sie es auf.

<?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);
Die obige Routine gibt Folgendes aus:

1

1

Filterung für unserialize() (PHP 7) bereitstellen

Diese Funktion soll eine

sicherere Möglichkeit zum Entpacken unzuverlässiger Daten bieten. Es verhindert eine potenzielle Code-Injection durch Whitelisting.

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

Gruppenverwendungsdeklarationen (PHP 7)

Klassen, Funktionen und

Konstanten können jetzt aus demselben Namespace importiert werden Eine Single-Use-Anweisung wird auf einmal importiert.

Das obige ist der detaillierte Inhalt vonEinführung in neue Funktionen wie anonyme Klassen, importierte Klassen und die Verwendung von Schließungen in PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn