私が整理したPHP 7.0の主な新特性
7781 ワード
原文:http://php.net/manual/en/migration70.new-features.php
1.スカラーパラメータタイプ宣言
現在は文字列、整数、浮動小数点、ブール型パラメータ声明をサポートしています.以前はクラス名、インターフェース、配列、およびCallableのみをサポートしています.
2つのスタイル:強制変換モード(デフォルト)と厳格モード
?? 代わりにissetが必要な場合に使うのは文法飴です.
は、2つの表式の値の大きさを見て、3つの関係を返します.
php 5.6はすでにCONST文法定義配列類の定数をサポートしており、PHP 7ではdefine文法をサポートしています.
1.スカラーパラメータタイプ宣言
現在は文字列、整数、浮動小数点、ブール型パラメータ声明をサポートしています.以前はクラス名、インターフェース、配列、およびCallableのみをサポートしています.
2つのスタイル:強制変換モード(デフォルト)と厳格モード
<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
return array_sum($ints);
}
var_dump(sumOfInts(2, '3', 4.1));
2.戻りタイプ宣言<?php
function arraysSum(array ...$arrays): array
{
return array_map(function(array $array): int {
return array_sum($array);
}, $arrays);
}
print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));
3.演算子?? 代わりにissetが必要な場合に使うのは文法飴です.
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
4.<=>比較演算子は、2つの表式の値の大きさを見て、3つの関係を返します.
<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
5.defineは配列の種類を定義する値をサポートします.php 5.6はすでにCONST文法定義配列類の定数をサポートしており、PHP 7ではdefine文法をサポートしています.
<?php
define('ANIMALS', [
'dog',
'cat',
'bird'
]);
echo ANIMALS[1]; // outputs "cat"
6.匿名クラス<?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());
7.整除関数intdivを追加しました.