现在php已经升级到php7了,那么php有哪些打的变化呢?
现在就来说说:
1、标量参数类型声明
declare(strict_types=1); //是否开启严禁模式
function test(array $a){
return count($a);
}2、返回类型声明
function test(array $a):int{
return count($a);
}3、语法糖
$username=$_GET['username']??"no"
4、比较运算符 <=> 太空船操作符(组合比较符)
1<=>2 如果第一个数小于第二个数 返回 -1 等于返回0 、 大于返回 1
5、命名变量上的使用
use \helper\ClassA;
use \helper\ClassB;
php7
use \helper\{ClassA,ClassB}
6、define 定义数组
php5.6 const 可以定义数组了,
php7中可以使用define去定义数组了
7、匿名函数
$anonymous_func = function(){return 'function';};
echo $anonymous_func(); // 输出function
8、set_exception_handler() 不再保证收到的一定是 Exception 对象
在 PHP 7 中,很多致命错误以及可恢复的致命错误,都被转换为异常来处理了。 这些异常继承自 Error 类,
此类实现了 Throwable 接口 (所有异常都实现了这个基础接口)。
PHP7进一步方便开发者处理, 让开发者对程序的掌控能力更强. 因为在默认情况下,
Error会直接导致程序中断, 而PHP7则提供捕获并且处理的能力, 让程序继续执行下去, 为程序员提供更灵活的选择。
9、
匿名类
现在支持通过new class 来实例化一个匿名类,实例如下
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());
//php7新特性
//标量参数类型声明
function test(array $a){
return count($a);
}
// echo test(['aa','bb']);
// echo test(123);
//PHP Fatal error: Uncaught TypeError: Argument 1 passed to test() must be of the type array, integer given, called in D:\phpStudy\WWW\test\php7.php on line 14 and defined in D:\phpStudy\WWW\test\php7.php:6
//
//
//
function test2($a):int{
return count($a);
// return [];
}
//PHP Fatal error: Uncaught TypeError: Return value of test2() must be of the type integer, array returned in //D:\phpStudy\WWW\test\php7.php:20
//Stack trace:
//#0 D:\phpStudy\WWW\test\php7.php(23): test2(123)
// echo test(['aa','bb']);
echo test2(123);
//语法糖的写法
echo $_GET['aaa']??'no';
//4.<=> 比较运算符
//就是看两个表达式值的大小,三种关系: = 返回0、< 返回-1、 > 返回 1