PHP 7新特性
13925 ワード
PHPスカラータイプと戻り値タイプ宣言
デフォルトでは、すべてのPHPファイルは弱いタイプのチェックモードです.
PHP 7はスカラータイプ宣言の特性を追加し、スカラータイプ宣言には2つのモードがあります.強制モード(デフォルト) 厳格モード declare(strict_types=1);
コードにstrict_を指定するtypesの値(1または0)、1は厳格なタイプの検査モードを表し、関数呼び出しと戻り文に作用する.0表弱型検査モードを示す
使用できるタイプのパラメータは次のとおりです. int float bool string interfaces array callable
PHP 7は、戻りタイプ宣言のサポートを追加し、戻りタイプ宣言は関数の戻り値のタイプを示します.
宣言できる戻りタイプは次のとおりです. int float bool string interfaces array callable
新しい戻り値タイプvoidが導入された.戻り値をvoidタイプとして宣言する方法は、return文を省略するか、空のreturn文を使用します.void関数ではNULLは正当な戻り値ではありません
返されるタイプにはvoidもあり、返されるタイプをvoidと定義する関数には戻り値がなくnullを返してもだめです
void関数はreturn文を省略したり、空のreturn文を使用したりすることができます.
PHP NULL連結演算子
PHP 7に新たに追加されたNULL連結演算子(?)isset()検出を実行するための三元演算のショートカットです
NULL連結演算子は、変数が存在し、値がNULLではないかどうかを判断します.そうであれば、自身の値を返します.そうでなければ、2番目のオペランドを返します.
PHP宇宙船演算子(コンボ比較子)
PHP 7で新しく追加された宇宙船演算子(コンビネーション比較子)は、2つの式$aと$bを比較するために使用され、$aが$bより小さい、等しい、またはそれより大きい場合、それぞれ-1、0または1を返します.
PHP定数配列
PHP 5.6ではconstで定数配列のみを定義でき、PHP 7はdefine()で定義できる
PHP匿名類
PHP 7は、new classによって匿名クラスをインスタンス化することをサポートし、これはいくつかの「使用後焼却」の完全なクラス定義に代わることができる.
PHP Closure::call()
PHP 7のClosure::call()は、閉パッケージ関数を新しいオブジェクトインスタンスに動的にバインドし、その関数の実行を呼び出すより良いパフォーマンスを持っています.
PHPろ過
PHP 7はunserialize()にフィルタを提供できる特性を追加し、不正なデータのコード注入を防止し、より安全な逆シーケンス化データを提供する
PHP IntlChar()
PHP CSPRNG
CSPRNG(Cryptographically Secure Pseudo-Landom Number Generator、擬似乱数発生器).
PHP 7は、いくつかのCSPRNG関数を導入することによって、暗号学的に強い乱数を生成する簡単な機構を提供する. random_bytes()-保護された擬似ランダム文字列を暗号化して生存します. random_int()-保護された擬似ランダム整数を暗号化して生存する.
PHP 7異常
PHP 7 use文
PHP 7は、同じnamespaceから同じuseを使用してクラス、関数、定数をインポートできます.
PHP 7エラー処理
PHP 7は多くのエラーの報告方式を変更した.PHP 5の従来のエラー報告機構とは異なり,現在では多くのエラーがError異常として投げ出されている.
このError異常は、通常の異常のようにtry/catchブロックによって捕捉され得る.一致するtry/catchブロックがない場合は、set_exception_handler()によって登録された例外処理関数を呼び出して処理します.例外処理関数が登録されていない場合は、従来の方法で処理されます.Fatal Errorとして報告されます.
ErrorクラスはExceptionクラスから拡張されたわけではないので、catch(Exception$e){...}このようなコードはErrorをキャプチャできない.catch(Error$e){...}このようなコードは、異常処理関数(set_exception_handler()を登録することによって、Errorをキャプチャする.
PHP 7 intdiv()関数
PHP 7はintdiv()関数を新たに追加し、2つのパラメータを受信し、戻り値は第1のパラメータが第2のパラメータを除いた値であり、整列する.
PHP 7 Sessionオプション
PHP 7廃棄特性
PHP 7除去の拡張
PHP 7が移動したSAPI
デフォルトでは、すべてのPHPファイルは弱いタイプのチェックモードです.
PHP 7はスカラータイプ宣言の特性を追加し、スカラータイプ宣言には2つのモードがあります.
コードにstrict_を指定するtypesの値(1または0)、1は厳格なタイプの検査モードを表し、関数呼び出しと戻り文に作用する.0表弱型検査モードを示す
使用できるタイプのパラメータは次のとおりです.
php
//
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
//9
php
//
declare(strict_types=1);
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
//PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……
PHP 7は、戻りタイプ宣言のサポートを追加し、戻りタイプ宣言は関数の戻り値のタイプを示します.
宣言できる戻りタイプは次のとおりです.
php
declare(strict_types=1);
function returnIntValue(int $value): int
{
return $value;
}
print(returnIntValue(5));
?>
新しい戻り値タイプvoidが導入された.戻り値をvoidタイプとして宣言する方法は、return文を省略するか、空のreturn文を使用します.void関数ではNULLは正当な戻り値ではありません
返されるタイプにはvoidもあり、返されるタイプをvoidと定義する関数には戻り値がなくnullを返してもだめです
void関数はreturn文を省略したり、空のreturn文を使用したりすることができます.
PHP NULL連結演算子
PHP 7に新たに追加されたNULL連結演算子(?)isset()検出を実行するための三元演算のショートカットです
NULL連結演算子は、変数が存在し、値がNULLではないかどうかを判断します.そうであれば、自身の値を返します.そうでなければ、2番目のオペランドを返します.
$site = isset($_GET['site']) ? $_GET['site'] :'python';
==>
$site = isset($_GET['site']) ?? 'python';
PHP宇宙船演算子(コンボ比較子)
PHP 7で新しく追加された宇宙船演算子(コンビネーション比較子)は、2つの式$aと$bを比較するために使用され、$aが$bより小さい、等しい、またはそれより大きい場合、それぞれ-1、0または1を返します.
php
print(1<=>1);
print(1<=>2);
print(2<=>1);
?>
//0 -1 1
PHP定数配列
PHP 5.6ではconstで定数配列のみを定義でき、PHP 7はdefine()で定義できる
php
define('sites', [
'Google',
'Runoob',
'Taobao'
]);
?>
PHP匿名類
PHP 7は、new classによって匿名クラスをインスタンス化することをサポートし、これはいくつかの「使用後焼却」の完全なクラス定義に代わることができる.
PHP Closure::call()
PHP 7のClosure::call()は、閉パッケージ関数を新しいオブジェクトインスタンスに動的にバインドし、その関数の実行を呼び出すより良いパフォーマンスを持っています.
php
class A {
private $x = 1;
}
//PHP7
$getXCB = function() {
return $this->x;
};
// A
$getX = $getXCB->bindTo(new A, 'A');
echo $getX();
print(PHP_EOL);
//PHP 7+
$getX = function() {
return $this->x;
};
echo $getX->call(new A);
?>
//
php
function callback($callback) {
$callback();
}
$var = ' ';
callback(function() use (&$var){
echo " {$var}";
$var = 1;
});
print($var);
?>
PHPろ過
PHP 7はunserialize()にフィルタを提供できる特性を追加し、不正なデータのコード注入を防止し、より安全な逆シーケンス化データを提供する
php
class MyClass1 {
public $obj1prop;
}
class MyClass2 {
public $obj2prop;
}
$obj1 = new MyClass1();
$obj1->obj1prop = 1;
$obj2 = new MyClass2();
$obj2->obj2prop = 2;
$serializedObj1 = serialize($obj1);
$serializedObj2 = serialize($obj2);
// ,
// allowed_classes false,unserialize __PHP_Incomplete_Class
$data = unserialize($serializedObj1, ["allowed_classes"=>true]);
// __PHP_Incomplete_Class
$data2 = unserialize($serializedObj2, ["allowed_classes"=>["MyClass1", "MyClass2"]]);
print($data->obj1prop);
echo "
";
print($data2->obj2prop);
?>
PHP IntlChar()
PHP CSPRNG
CSPRNG(Cryptographically Secure Pseudo-Landom Number Generator、擬似乱数発生器).
PHP 7は、いくつかのCSPRNG関数を導入することによって、暗号学的に強い乱数を生成する簡単な機構を提供する.
php
//string random_bytes(int $length)
//@param length-
//@return , int
$bytes = random_bytes(5);
//print($bytes);
print(bin2hex($bytes));
//int random_int (int $min, int $max)
//@param min , PHP_INT_MIN
//@param max , PHP_INT_MAX
//@return int
print(random_int(100, 999));
print(random_int(-1000, 0));
?>
PHP 7異常
PHP 7 use文
PHP 7は、同じnamespaceから同じuseを使用してクラス、関数、定数をインポートできます.
PHP 7エラー処理
PHP 7は多くのエラーの報告方式を変更した.PHP 5の従来のエラー報告機構とは異なり,現在では多くのエラーがError異常として投げ出されている.
このError異常は、通常の異常のようにtry/catchブロックによって捕捉され得る.一致するtry/catchブロックがない場合は、set_exception_handler()によって登録された例外処理関数を呼び出して処理します.例外処理関数が登録されていない場合は、従来の方法で処理されます.Fatal Errorとして報告されます.
ErrorクラスはExceptionクラスから拡張されたわけではないので、catch(Exception$e){...}このようなコードはErrorをキャプチャできない.catch(Error$e){...}このようなコードは、異常処理関数(set_exception_handler()を登録することによって、Errorをキャプチャする.
php
class MathOperations
{
protected $n = 10;
// , 0,
public function doOperation(): string
{
try
{
$value = $this->n % 0;
return $value;
} catch (DivisionByZeroError $e)
{
return $e->getMessage();
}
}
}
$mathOperationsObj = new MathOperations();
print($mathOperationsObj->doOperation());
?>
PHP 7 intdiv()関数
PHP 7はintdiv()関数を新たに追加し、2つのパラメータを受信し、戻り値は第1のパラメータが第2のパラメータを除いた値であり、整列する.
PHP 7 Sessionオプション
PHP 7廃棄特性
PHP 7除去の拡張
PHP 7が移動したSAPI