一. 前言
PHP7具有很多用于编写高性能,高效能的新特性,同时也移除了一些历史版本中过时的特性,若使用过时的特性的话,在PHP7中会触发一个Error错误。目前大多数的致命错误都可以被异常捕获。所以PHP不再显示一些不标准的致命错误,取而代之的是抛出一个携带很多可用信息的异常。
二.OOP特性
1.类型声明:函数或者是对象的方法都可以使用
在PHP7之前,我们在函数和类之间传递参数时不需要声明变量类型。同样滴,在返回数据时也不必声明类型。任何数据类型都可以被传递,返回。这样会带来一个问题----PHP不清楚你传递的是什么类型的变量。
为解决这个问题,PHP7引入了类型声明,目前明确的有两类变量可以声明类型,1是形参,2是返回值。
1.1.形参类型声明
PHP7将类型声明变成了可能。PHP7支持的形参类型声明的类型有整形,浮点型,字符串,布尔型。
class person
{
declare(strict_type=1); //strict_types=1 及开启严格模式.默认是弱类型校验.
public function age(int $age)
{
return $age;
}
public function name(string $name)
{
return $name;
}
}
$person = new Person();
echo $person->age(30);
echo $person->name('this is my name!');
由上面的代码得知,我们封装了一个person类,这个类有两个函数,分别是age 和name。其中age函数的形参类型声明为int类型,而name函数的形参类型声明为string类型。而strict_type=1表示类型的检查开启严格模式,因为PHP7是默认弱类型检查的,比如我们输入代码echo $person->age(30.5); 则会提示Uncaught Type Error的致命错误,提示age方法只接受整型数而不是浮点数。
1.2. 返回类型声明。
PHP7的另一个重要特性是支持返回类型的声明。无论是在函数还是对象的方法中,我们都可以声明返回类型。
Class Person
{
public function age(float $age) : string
{
return 'Age is '.$age;
}
public function name(string $name) : string
{
return $name;
}
}
如上面代码所示,我们使用了返回类型声明,Person类中的age和name都返回string字符串。
返回类型声明还可以使用对象作为返回类型。
Class Address
{
public function getAddress()
{
return ['street'=>'street1','country'=>'china'];
}
}
Class Person
{
public function getAddress()
{
return new Address();
}
}
由上面代码所示,getAddress方法返回一个address对象。
类型声明的好处在于:它让函数和方法的形参和返回值有所预期,避免不必要的数据传递,从而造成错误。