ホームページ >php教程 >php手册 >PHP7の新機能紹介

PHP7の新機能紹介

WBOY
WBOYオリジナル
2016-08-20 08:47:351495ブラウズ

よく使われる新機能をいくつかまとめましたので、「いいね!」をお願いします! ! !

新しいオペレーター
1. ??
$username = $_GET['user'] ?? '';
$username = isset($_GET['user']) $_GET['user'] : ' 誰も' ;

2. <=>
$number1 <=> $number1 が $number2 より小さい場合、等しい場合、または大きい場合は、それぞれ -1、0、1 を返します


新しい関数
intdiv(divisor, divisor) — 除算結果を丸める
intdiv(3, 2) //1



defineは配列を定義できます
define('ANIMALS', [
'dog',
'cat',
'bird'
]);


戻り値の型宣言
function test() :int
{
return 1; //true
return 'string' }


;

スカラー型宣言

function test(string $name) :int
{
return 22;
}
string integer float boolean



コアエラーをキャッチできる

エラー階層
Throwable
Error
ArithmeticError
DivisionByZeroError

AssertionError
ParseError
TypeError
Exception


コアソートの最適化
php5: array(1=>0, 0=>0 ) //クイックソート (不安定ソート)
php7: array(0=>0, 1=>0) //クイックソート + 選択ソート (安定ソート)



php5 よりも抽象的な構文 Number (abstract snytaxツリー) AST
PHP -> パーサー -> AST -> オペコード -> 実行
パフォーマンスが向上し、メモリ消費量も増加しましたが、無視できます


新しいクラスを通じて匿名クラスをインスタンス化できます
getAnonymousClass($config) {
return new class($config) {};
}



メソッドをオブジェクトに一時的にバインドし、
$f = function() {
p($ this->name) を呼び出します;
};

クラス F {
private $name = 'F';

}


$f->call(new F);



統一された構文変数
括弧は左から右への動作に影響しません

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

php5:
注意: E:Program FilesphpStudyWWWtest.php に初期化されていない文字列オフセット: 1 4 行目
注意: 未定義の変数: E:Program FilesphpStudyWWWtest.php 4 行目
NULL

解析エラー: 構文エラー、予期しない '[' が E:Program FilesphpStudyWWWtest.php 4 行目

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


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




名前空間について
/ / Pre PHP 7 コード
somenamespaceClassA を使用します;
somenamespaceClassB を使用します;
somenamespaceClassC を C として使用します;

関数 somenamespacefn_a を使用します;
関数 somenamespacefn_b を使用します;
関数 somenamespacefn_c を使用します;

const somenamespaceConstA を使用します。
const somenamespaceConstC を使用します。
// PHP 7+ コード

use somenamespace{ClassA, ClassB, ClassC as C};

use function somenamespace{fn_a, fn_b, fn_c};
use const somenamespace{ConstA, ConstB, ConstC};

リストの変更
1.
list($array[], $array[], $array[]) = [1, 2, 3];
var_dump($array);
php5: array(3) { [0]=> ; int(3) [1]=> int(2) [2]=> int(1) }
; php7: array(3) { [0]=> int(2) [2]=> int(3) }


2. null 値の割り当ては許可されません
list() = $a;
list(,,) = $a;
list($x, list (), $y) = $a;

php7 はエラーを報告します 致命的なエラー: 空のリストは使用できません

3. 文字列分割はサポートされなくなりました
$string = "xy";
list($x, $ y) = $string;
var_dump($x, $y);

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

foreach
変数参照の変更は、 array
$array = [0];
foreach ($array as &$val) {
var_dump($val);
$array[1] = 1;
}
php5: int(0)
php7: のループint(0) int(1)


参考元アドレス:http://www.php7.site/book/php7/variable-changes-22.html

PHP パフォーマンスを向上させるためのヒント: http://www.laruence.com/2015/12/04/3086.html

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。