Heim >php教程 >php手册 >Einführung in die neuen PHP7-Funktionen

Einführung in die neuen PHP7-Funktionen

WBOY
WBOYOriginal
2016-08-20 08:47:351509Durchsuche

Wir haben einige häufig verwendete neue Funktionen zusammengestellt, bitte liken Sie! ! !

Neuer Operator
1. ??
$username = $_GET['user'] ?? '';
$username = isset($_GET['user']) ? 'user'] : 'nobody';

2. <=>
$number1 <=> Gibt jeweils zurück, wenn $number1 kleiner, gleich oder größer ist $number2 -1,0,1


Neue Funktion
intdiv(dividend, divisor) – Runden des Divisionsergebnisses
intdiv(3, 2) //1



define kann Arrays definieren
define('ANIMALS', [
'dog',
'cat',
'bird'
]);


Rückgabetypdeklaration
function test() :int
{
return 1; //true
return '1' //true
return 'string'; //false
}


Skalare Typdeklaration
Funktionstest(string $name) :int
{
return 22;
}
string integer float boolean


kann Kernfehler abfangen
Fehlerhierarchie
Auslösbarer
Fehler
ArithmeticError
DivisionByZeroError

AssertionError
ParseError
TypeError

 Ausnahme


Optimierung der Kernsortierung
php5: array(1=>0, 0=>0) //Schnelle Sortierung (instabile Sortierung)
php7: array( 0=>0, 1=>0) //Schnelle Sortierauswahlsortierung (stabile Sortierung)



Es gibt mehr abstrakte Syntaxnummern (abstrakter Syntaxbaum) AST als PHP5
PHP -> Parser -> AST ->Opcodes -> Die Leistung ist gestiegen, der Speicherverbrauch ist ebenfalls gestiegen, aber er ist vernachlässigbar eine anonyme Klasse
function getAnonymousClass($config) {
return new class($config) {};
}



Eine Methode vorübergehend an das Objekt binden und call
$f = function() {
p($this->name);
};

Klasse F {
private $name = 'F';
}

$f->call(new F);


Einheitliche Syntaxvariablen
Klammern haben keinen Einfluss auf das Verhalten von links nach rechts

$a = 'b';
$b = ['1', '2', '3'];
var_dump($$a[1]);
var_dump(($$a) [1]);

php5:
Hinweis: Nicht initialisierter String-Offset: 1 in E:Program FilesphpStudyWWWtest.php in Zeile 4
Hinweis: Undefinierte Variable: in E:Program FilesphpStudyWWWtest.php online 4
NULL

Analysefehler: Syntaxfehler, unerwartetes „[“ in E:Program FilesphpStudyWWWtest.php in Zeile 4

php7: string(1) „2“ string(1) "2"


Ausdruck PHP5 PHP7
$$foo['bar']['baz'] ${$foo['bar']['baz']} )['bar ']['baz']
$foo->$bar['baz']   $foo->{$bar['baz']}   ($foo->$bar)[ 'baz']
$foo->$bar['baz']()   $foo->{$bar['baz']}()  ($foo->$bar)['baz' ]()
Foo::$bar['baz']()   Foo::{$bar['baz']}()   (Foo::$bar)['baz']()




Über Namespaces
// Code vor PHP 7
use somenamespaceClassA;
use somenamespaceClassB;
use somenamespaceClassC as C;

Funktion somenamespacefn_a verwenden;
Funktion somenamespacefn_b verwenden;
Funktion somenamespacefn_c verwenden;

use const somenamespaceConstA;
use const somenamespaceConstB;
use const somenamespaceConstC;

// PHP 7-Code
use somenamespace{ClassA, ClassB, ClassC as C};
use function somenamespace{fn_a, fn_b, fn_c};

use const somenamespace{ConstA, ConstB, ConstC} ;



Änderung der Liste
1.
list($array[], $array[], $array[]) = [1, 2, 3];
var_dump($array);
php5: array(3) { [0]=> int(3) [1]=>(2) [2]=> php7: array(3) { [0]=> int(2) [2]=> Zuweisung eines Nullwerts zulassen
list() = $a;
list(,,) = $a;
list($x, list(), $y) = $a;

php7 meldet einen schwerwiegenden Fehler: Leere Liste kann nicht verwendet werden

3. String-Splitting wird nicht mehr unterstützt
$string = "xy";
list($x, $y) = $string ;
var_dump($x, $y);

php5: string(1) "x" string(1) "y"
php7: null null

foreach Modifizieren Die
-Variablenreferenz wirkt sich auf die Schleife im Array
$array = [0];
foreach ($array as &$val) {
var_dump($val);
$array aus [1] = 1;
}
php5: int(0)
php7: int(0) int(1)


Referenzquellenadresse: http://www.php7.site/book/php7/variable-changes-22.html

Tipps zur Verbesserung der PHP-Leistung: http://www.laruence.com/2015/12/04/3086.html

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