这是本人测试php7的一些新特性,部分地方标注与php之前版本的不同,php7比之前的php版本效率几乎快了一倍,使用php7是个趋势。别的不多说,上代码,还是那样,你用我这个代码测试时,运行一个测试时注释掉其余的。
//标量类型() 强制类型声明
function register(int $fee){
var_dump($fee);
}
//register(6680);
register(true);//php7返回1,php5返回true
//返回类型声明
/**
function registers():int{
return "hello";
}
var_dump(registers());//报错,返回值为整型
**/
//接口也可指定返回类型
/**
interface A{
static function make():A;
}
*/
//null合并运算符
//旧版:isset($_GET['id'])?$_GET['id']:err;
//新版:$_GET['id']?? 'err';
//$id = isset($_GET['id'])? $_GET['id']:1;
$id7 = $_GET['id'] ?? 6680;
echo $id7;
//太空船比较符(组合比较符)<=>
$fee1=6680;
$fee2=8680;
var_dump($fee1<=>$fee2);//返回-1,相等返回0,左边>右边返回1
//浮点型一样,字符串按每个字符的ASII编码进行
//通过define()定义常量数组 不用加$
define('TEMP',['paphp','sky','username'=>'tengman','luofeng']);
echo TEMP[0];//输出paphp
echo TEMP['username'];//输出tengman
//匿名类,使用完即销毁,临时的. new class类实例化一个匿名类 一次性产品
//匿名类
interface Test{
public function mains();
}
class Core{
private $errors;
public function getErrors():Test{
return $this->errors;
}
public function setErrors(Test $errors){
$this->errors=$errors;
}
}
$obj = new Core;
$obj->setErrors(new class implements Test{
public function mains(){
echo '测试匿名类';
}
});
$obj->getErrors()->mains();//输出'测试匿名类'
/**$tempData = new class implements Test{
public function mains(){
echo '测试匿名类';
}
};//加分号
//var_dump($tempData);//输出object(class@anonymous)#1(0){}
$tempData->mains();//输出方法中的内容
**/
以上是我单独一个文件,这里再贴一个
<?php
/**
此文件为测试php7新特性文件
*/
//Unicode codepoint转译语法 使用比较少
//echo "u{9876}";//php7输出u{9876}
//echo u{9876};//导致错误
//Closure::call()//闭包的使用 闭包$temp = function(){};一次性产品
class Test{
public $username = 'php7name';
public function register(){
return "测试闭包绑定";
}
}
$temp = function(){return $this->username;};
$temps = function(){return $this->register();};
$names = $temp->bindTo(new Test,'Test');
$method = $temps->bindTo(new Test,'Test');
//echo $names();//输出php7name
//echo $method();//输出测试闭包绑定
//echo $method->call(new Test);//输出测试闭包绑定
//为unserialize()提供过滤
$tempArr = array(1,2,3,4,5);
$arr = serialize($tempArr);
//ar_dump(unserialize($arr));
//断言
//class PackError extends AssertionError{}
//assert(false,new PackError('hehe'));//false可为表达式,为false时输出后面内容
//命名空间 use function functionA:php5 函数命名空间
//use const ConstA:php5常量命名空间
//use namespace{ClassA,ClassB};//php7使用类 类命名空间
//use function(function1,function2);//php7函数命名空间
//相除取整 intdiv(200,3);
//echo intdiv(200,3);
//取随机数函数 CSPRNG random_bytes(10);//10代表长度
//echo random_bytes(10);
//echo random_int(1,1000);
//preg_replace_callback_array()
//会话机制 ob_start();打开缓冲区
/**
session_start(
array(
//设置私有,会话缓存
'cache_limiter'=>'private',
'read_and_close'=>'true',//使用完立即关闭
)
);//可以传参,缓存,是否立即关闭
**/
//php7被废弃属性
/**
1,foreach不再改变内部数组指针
2,foreach通过引用遍历时,有更好的迭代特性
3,十六进制不再认为是数字 ?
4,php7被移除的函数
5,new操作符创建的对象不能以引用方式赋值给变量
6,移除了asp和scriptPHP标签
7,从不匹配的上下文发起调用
8,在数值溢出的时候,内部函数将会失败
9,json扩展已经被jsond取代
10,ini文件中#注释格式被移除
11,$HTTP_RAW_POST_DATA被移除
12,yield变更为右连接符
*/
/**
$arr = array(10,20,30,40,50);
foreach($arr as $key=>$val){
echo current($arr);//输出1010101010 php5输出2020202020
//echo $val;
}
**/
//echo 0x11==17;
还有些,由于字数有限,以后看情况再写