电商项目day7-2017年2月25日php新特性_第1页
电商项目day7-2017年2月25日php新特性_第2页
电商项目day7-2017年2月25日php新特性_第3页
电商项目day7-2017年2月25日php新特性_第4页
电商项目day7-2017年2月25日php新特性_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、新特性54重点在54 版本里面的里面的数组的写法可以写成类似这样的简便$arr = array(12, 45);简化版:$arr1 = 12, 45;55一、概念:提供了一种简单的方式实现数据的可迭代,比使用迭代器 Iterator 更容易function gen()for ($i = 1; $i $4; $i +) yield $i;foreach(gen() as $value) echo $value ._EOL;以上例子将输出 1, 2, 3;二、异常和 finally 关键字概念:进行异常捕获,无论是否发生异常,finally 中的代码始终会被执行。try 抛出异常 catch (E

2、xception $e) 抛出异常 finally 出现异常后的收尾工作。三、foreach 和list()概念:使用 list 对 foreach 出的元素进行拆分$data = 1, 2,3, 4,;foreach ($data as list($one, $two) echo one: $one, two: $two ;输出one: 1, two: 2one: 3, two: 4四、empty 和任意表达式概念:empty 中可传入任意合法的表达式五、数组和字符串直接表达式概念:在数组和字符串直接表达式上可直接进行获取其中的元素1,2,3,4,50“This is an string”0

3、六、新的加密函数 password_hash()概念:不需要手动管理生成时的盐值和算法,兼容 bcrypt验证使用 password_verify();$password = “password”;$passwordHash = password_hash($password);if (password_verify(password, $hash) echo 有效!; else echo 无效;56一、使用表达式定义常量、变量、参数默认值概念:可以在使用和定义常量时对常量进行简单的运算const ONE = 1;const TWO = ONE * 2;class C const THREE

4、= TWO + 1;const ONE_THIRD = ONE / self:THREE;consTENCE = The value of THREE is .self:THREE;public function f($a = ONE + self:THREE) return $a;echo (new C)-f().n;echo C:SENTENCE;二、可变参数个数“”概念:可以使用接收数量不固定的参数和传递数量不固定的参数2.1. 形参function test($a, $b, $args)var_dump($args);test(1, 2, 3, 4, 5);输出: 3, 4, 52.2

5、. 实参function test($a, $b, $args)test1($args);function test1($a, $b, $c) var_dump($a, $b, $c);test(1, 2, 3, 4, 5);输出: 3, 4, 5三、数字的次方操作(幂运算)*概念:提供简化的次方操作2 的 5 次方:2 * 2 * 2 * 2 * 2简化的操作: 2 * 5四、导入常量和函数概念:以前只能导入另一个空间中的类,现在支持导入另一个空间中的常量和函数namespace NameSpace const FOO = 42;function f() echo FUNCTION .n;

6、namespace use const NameSpaceFOO;use function NameSpacef;echo FOO.n;f();70一、类型严格模式【重点】概念:提供指定参数类型和返回值类型的,类似C+等强类型语言,可以提高代码执行效率开启严格模式:declare(strict_types=1);可选类型:类型释义类名/接口名array数组callable可被调用,包括:函数、闭包函数、实现了 invoke()的类bool类型,true falsedeclare(strict_types=1);function sum($a, float $b): float return $

7、a + $b;二、null 合并运算符和运算符【重点】概念:简化 isset($variable) ? $variable : 其他值 和比较操作的写法isset($variable) ? $variable : 其他值 简写为:$variable ? 其他值$a 和 $b 比较,相等返回 0, $a 大于 $b 返回 1, $a 小于 $b 返回 -1 简写为:$a $b三、定义数组常量概念:可以将简单数组定义为常量define(ANIMALS, dog,float浮点型:3.1415整形:1, 2, 3, 4string字符串型:”string”cat,bird);echo ANIMALS

8、1; / 输出 cat四、类概念:可以定义类,实现用后即销毁的类。$obj = new class public $name = ;public $age = 20;var_dump($obj);输出:object(classanonymous)#1 (2) name= string(6) age=(20) 五、unicode 转义语法概念:可以通过双引号转义 unicode 编码为对应的字符echo u9999;输出:香六、Closure:call()概念:使得闭包函数能够接触到一个对象的$this设置闭包函数的上下文# 定义一个用于测试的类class A private $x = 1;#

9、老写法$getXCB = function() return $this-x;$getX = $getXCB-bindTA);echo $getX();# 新写法:$getX = function() return $this-x;echo $getX-call(new A);输出:1;七、unserialize()限定类概念:限定对象被反序列化时使用的类,避免潜在的代码注入。不允许任何类,将为plete_Class 类的对象$data = unserialize($foo, allowed_classes = false);允许特定的类,不在列表中将为plete_Class 类的对象$dat

10、a = unserialize($foo, allowed_classes = MyClass, MyClass2);允许所有类$data = unserialize($foo, allowed_classes = true);八、lChar 类lChar:ord();lChar:chr();九、断言和异常概念:断言(Assert)现在已经是一个语法结构,速度更快,同时支持抛出自定义错误ini_set(assert.exception, 1);class CustomError extends AssertionError assert(false, new CustomError(Some

11、error message);十、命名空间成员批量导入概念:批量从另一个空间中导入类、函数和常量use somenamespaceClassA, ClassB, ClassC as C;批量导入空间 somenamespace 的类 ClassA, ClassB, ClassCuse function somenamespacefn_a, fn_b, fn_c;批量导入空间 somenamespace 中的函数fn_a, fn_b, fn_cuse const somenamespaceConstA, ConstB, ConstC;批量导入空间 somenamespace 中的常量ConstA

12、, ConstB, ConstC十一、返回值和委托概念:可以有返回值了,可以返回另一个# 获取的返回值$gen = (function() yield 1;yield 2;return 3;)();foreach ($gen as $val) echo $val,_EOL;echo $gen-getReturn(),_EOL;返回另一个#function gen()yield 1;yield 2;# 在当前中返回另一个yield from gen2();function gen2()yield 3;yield 4;foreach (gen() as $val)echo $val,_EOL;十二

13、、整数相除,取模:div()概念:简化整数相除操作原写法:floor(10/3);新写法:div(10, 3);十三、ses_start()覆盖配置文件配置ses_start(cache_limiter = private,read_and_close = true,);十四、捕获错误function call_method($obj)$obj-method();#产生错误try call_method(); catch (Error $e) var_dump($e);结果:71一、可为空的类型语法:?类型?string?arrayfunction test(?string $name)var

14、_dump($name);test(null);二、 函数void 返回值function swap(&$left, &$right) : voidif ($left = $right) return;$tmp = $left;$left = $right;$right = $tmp;$a = 1;$b = 2;var_dump(swap($a, $b), $a, $b);注意:* null 不是void, return;是返回空,return null;是返回 null,返回值不同。三、 iterable 类型四、多异常捕获try / some code catch (Exception |

15、 SecondException $e) / handleand second exceptions五、字符串取负数下标abcdef-2六、将callable 转为 Closureclass Testpublic function exeFunction()return Closure:fromCallable($this, privateFunction);private function privateFunction($param)var_dump($param);$privFunc = (new Test)-exeFunction();$privFunc(some value);七、数组短内从另一数组中变量$data = name =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论