PHP7 的新特性大概浏览下,还是能在工作的效率上有很大益处的。1,性能提升这个我就不做测试了,哈哈2,类型声明class Student
{
public function __construct()
{
$this->name = 'durban';
}
}
$student = new Student();
function enroll(Student $student, array $classes)
{
foreach ($classes as $class) {
echo "Enrolling " . $student->name . " in " . $class . "\n";
}
}
// enroll("name", ["class 1", "class 2"]);// Fatal error: Uncaught TypeError: Argument 1 passed to enroll() must be an instance of Student, string given
// enroll($student, "class"); // Fatal error: Uncaught TypeError: Argument 2 passed to enroll() must be of the type array, string given
enroll($student, array("class 1", "class 2"));
function stringTest(string $string)
{
echo $string . "\n";
}
stringTest("a string");3,可以声明严格类型校验模式 , 此声明必须第一个声明declare (strict_types = 1);4, 标量类型提示function getTotal(float $a, float $b)
{
return $a + $b;
}
// getTotal('a', 2); //Argument 1 passed to getTotal() must be of the type float, string given,
$total = getTotal(3, 2);
echo $total . "\n";5, 返回类型声明function getSum(float $a, float $b): int
{
// return $a + $b; // Fatal error: Uncaught TypeError: Return value of getTotal() must be of the type integer, float returned
return (int) ($a + $b); // truncate float like non-strict
}
$sum = getSum(3, 6);
echo $sum . "\n";6, 错误处理新的继承如下|- Exception implements Throwable |- …|- Error implements Throwable |- TypeError extends Error |- ParseError extends Error |- ArithmeticError extends Error |- DivisionByZeroError extends ArithmeticError |- AssertionError extends Errortry {
// Code that may throw an Exception or Error.
} catch (Throwable $t) {
// Executed only in PHP 7, will not match in PHP 5
} catch (Exception $e) {
// Executed only in PHP 5, will not be reached in PHP 7
}7, Null Coalesce Operator$name = $firstName ?? "Guest";等同于if (!empty($firstName)) {
$name = $firstName;
} else {
$name = "Guest";
}还可以像下面这样使用$name = $firstName ?? $username ?? $placeholder ?? “Guest”;8, Spaceship Operator$compare = 2 1等同于下面2 1? return 19,Easy User-land CSPRNG: random_int and random_bytes.$int = random_int(1, 2);
var_dump($int);
$bytes = random_bytes(5);
var_dump(bin2hex($bytes));