Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind die Funktionen in PHP7?

Was sind die Funktionen in PHP7?

零下一度
零下一度Original
2017-06-23 14:25:041228Durchsuche
<h2>Typdeklaration</h2> <p>Wenn man sich den Code ansieht, ist es auf einen Blick klar. </p> <pre class="brush:php;toolbar:false">class person {     public function age(int $age) : string     {         return 'Age is ' . $age;     } }</pre> <h2>Batch-Deklaration von Namespace und Verwendungsschlüsselwort</h2> <p>Nicht gemischter Modus</p> <pre class="brush:php;toolbar:false">use Publishers\Packt\{ Book, Ebook, Video}; use function Publishers\Packt\{ getBook, saveBook }; use const Publishers\Packt\{ COUNT, KEY };</pre> <p>Gemischter Modus</p> <pre class="brush:php;toolbar:false">use Publishers\Packt\{     Book,     Ebook,     Video,     function getBook,     function saveBook,     const COUNT,     const KEY };</pre> <p>Zusammengesetzter Modus</p> <pre class="brush:php;toolbar:false">use Publishers\Packt\{     Paper\Book,     Electronic\Ebook,     Media\Video };</pre> <h2>Anonyme Klasse</h2> <p>Anonyme Klassen werden gleichzeitig deklariert und verwendet und haben alle Funktionen anderer Klassen. Der Unterschied besteht darin, dass anonyme Klassen keinen Klassennamen haben. Die Syntax lautet wie folgt: </p> <pre class="brush:php;toolbar:false">new class(argument) { definition };</pre> <p><em>Anonyme Klassen haben keine Klassennamen, aber innerhalb von PHP wird ihnen ein global eindeutiger Name in der Speicherreferenzadresstabelle zugewiesen. </em></p> <pre class="brush:php;toolbar:false">$name = new class('You') {     public function __construct($name)     {         echo $name;     } };</pre> <p>Anonyme Klassen können die übergeordnete Klasse und ihre Methoden erben. </p> <pre class="brush:php;toolbar:false">class Packt {     protected $number;     public function __construct()     {         echo 'parent construct';     }     public function getNumber() : float     {         return $this->number;     } } $number = new class(5) extends Packt {     public function __construct(float $number)     {         parent::__construct();         $this->number = $number;     } }; echo $number->getNumber();</pre> <p>Anonyme Klassen können Schnittstellen erben. </p> <pre class="brush:php;toolbar:false">interface Publishers {     public function __construct(string name, string address);     public function getName();     public function getAddress(); } class packt {     protected $number;     protected $name;     protected $address;     public function ... } $info = new class('name', 'address') extends Packt implement Publishers {     public function __construct(string $name, string $address)     {         $this->name = $name;         $this->address = $address;     }     public function getName() : string     {         return $this->name;     }     public function getAddress() : string     {         return $this->address;     } } echo $info->getName() . ' ' . $info->getAddress();</pre> <p>Anonyme Klassen können innerhalb einer Klasse verschachtelt werden. </p> <pre class="brush:php;toolbar:false">class Math {     public $first_number = 10;     public $second_number = 10;     public function add() : float     {         return $this->first_number + $this->second_number;     }     public function mutiply_sum()     {         return new class() extends Math         {             public function mutiply(float $third_number) : float             {                 return $this->add() * $third_number;             }         };     } } $math = new Math(); echo $math->mutiply_sum()->mutiply(2);</pre> <h2>Verlassen Sie den altmodischen Konstruktor </h2> <p> Ab PHP4 kann der Konstruktor sich selbst als Konstruktor deklarieren, indem er ihn entsprechend dem Klassennamen benennt. In PHP7 wird der Konstruktor in deklariert Auf diese Weise kann es weiterhin verwendet werden, wird jedoch nicht empfohlen und gibt die veraltete Meldung <code>Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...</code> aus. Es wird empfohlen, <code>__construct()</code> in PHP7 zu verwenden. </p> <h2>Throwable-Schnittstelle </h2> <p> Ab PHP7 können schwerwiegende Fehler im Programm abgefangen werden. PHP7 stellt die Throwable-Schnittstelle bereit und Ausnahmen und Fehler werden von dieser Schnittstelle geerbt. </p> <h2>Fehler</h2> <p>Jetzt lösen die meisten schwerwiegenden Fehlerbedingungen eine Fehlerinstanz aus. Ähnlich wie bei abgefangenen Ausnahmen können Fehlerinstanzen durch Try/Catch abgefangen werden. </p> <pre class="brush:php;toolbar:false">try {     ... } catch(Error $e) {     echo $e->getMessage(); }</pre> <p><em>In einigen Fehlersituationen wie TypeError, DivisionByZeroError, ParseError usw. werden nur Unterinstanzen von Fehlern ausgegeben. Der </em></p> <h2><=>-Operator </h2> <p><code><=></code> bündelt die drei Vergleichsoperatoren <code>==</code>, <code><</code> und <code>></code>, insbesondere Die Verwendungsregeln sind wie folgt. </p> <blockquote><p>Gibt 0 zurück, wenn beide Seiten des Operators gleich sind.<br>Gibt -1 zurück, wenn die linke Seite des Operators kleiner als die rechte Seite ist.<br>Gibt 1 zurück, wenn die linke Seite des Operators gleich ist ist größer als die rechte Seite</p></blockquote> <h2>Null-Merge-Operator </h2> <p><code>??</code> ist ein Zusammenführungsoperator, der direkt zurückgegeben werden kann, wenn der erste Operand vorhanden ist, andernfalls wird der zweite Operand zurückgegeben. </p> <pre class="brush:php;toolbar:false">$title = $post['title'] ?? NULL; $title = $post['title'] ?? $get['title'] ?? 'No title';</pre> <h2>einheitliche Variablensyntax </h2> <pre class="brush:php;toolbar:false">$first = ['name' => 'second']; $second = 'two'; echo $$first['name']; echo ${Sfirst['name']}; // PHP7 ... echo $object->$methods['title']; echo $object->{$methods['title']}; // PHP7</pre> <p> Hauptsächlich, weil sich die Parsing-Methode von PHP7 von der vorherigen Version von PHP unterscheidet. Fügen Sie einfach geschweifte Klammern in PHP7 hinzu, genau wie im obigen Code Andernfalls wird ein Fehler gemeldet. </p> <h2>Konstantes Array</h2> <p>Ab PHP5.6 können konstante Arrays mit dem Schlüsselwort <code>const</code> deklariert werden. In PHP7 können konstante Arrays über die Funktion <code>define</code> initialisiert werden. </p> <pre class="brush:php;toolbar:false">const STORES = ['en', 'fr', 'ar']; // php5.6 define('STORES', ['en', 'fr', 'ar']); // php7</pre> <h2>Standardwert im Switch </h2> <p>Vor PHP7 waren mehrere Standardwerte in der Switch-Anweisung zulässig. Ab PHP7 kann es nur einen Standardwert geben, sonst tritt dieser auf Schwerwiegender Fehler. </p> <pre class="brush:php;toolbar:false">// php7之前 switch (true) {     case 'value':         # code...         break;     default:         # code...         break;     default:         # code...         break; } // php7 switch (true) {     case 'value':         # code...         break;     default:         # code...         break; }</pre> <h2>Optionsarray in der Funktion „session_start“</h2> <p>Vor PHP7 müssen Sie bei der Verwendung von Sitzung zuerst die Funktion „session_start()“ aufrufen. Diese Funktion verfügt über keine zu übergebenden Parameter, alle sitzungsbezogen Die Konfigurationen befinden sich alle in der Datei php.ini. Ab PHP7 können Sie beim Aufruf dieser Funktion eine Reihe von Parameteroptionen übergeben. Diese Einstellungsinformationen überschreiben die Sitzungskonfiguration in php.ini. </p> <pre class="brush:php;toolbar:false">session_start([     'cookie_lifetime' => 3600,     'read_and_close' => true ]);</pre> <h2>Die unserialize-Funktion führt Filter ein </h2> <p>unserialize() kann jede Art von Objekt ohne Filterelemente deserialisieren, was unsicher ist. PHP7 führt Filter in unserialize() ein und ermöglicht die Deserialisierung von Standardmäßig alle Arten von Objekten. </p> <pre class="brush:php;toolbar:false">$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);</pre>

Das obige ist der detaillierte Inhalt vonWas sind die Funktionen 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