做网站一般怎么收费的,微软做网页的软件,网站制作导航栏怎么做,单位网站建设ppt1 生成器 yield关键字 yield的中文文档在这里#xff1a;http://php.net/manual/zh/language.generators.overview.php 查看文档#xff0c;能知道yield的一个功能就是能有效的降低迭代的内存开销。比如官网的这个xrange例子#xff1a; 12345678910111213141516171819?…1 生成器 yield关键字 yield的中文文档在这里http://php.net/manual/zh/language.generators.overview.php 查看文档能知道yield的一个功能就是能有效的降低迭代的内存开销。比如官网的这个xrange例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ?php function xrange($start, $limit, $step 1) { for ($i $start; $i $limit; $i $step) { yield $i; } } echo Single digit odd numbers: ; /* * Note that an array is never created or returned, * which saves memory. */ foreach (xrange(1, 9, 2) as $number) { echo $number ; } echo \n; ? 这里的xrange是一个迭代功能和range是一样的如果使用range函数的话那么函数内部实现会储存每个迭代的中间过程即每个中间变量都有个内存空间那么首先程序使用的内存空间就大了而且分配内存回收内存都会导致程序的运行时间加长。但是如果使用上yield实现的xrange函数的话里面所有的中间变量都只使用一个内存$i这样节省的时间和空间都会变小。 那么为什么yield会有这样的效果呢联想到lua中的yield这里就算是协程的概念了。在lua语言中当程序运行到yield的时候使用协程将上下文环境记录住然后将程序操作权归还到主函数当主函数调用resume的时候会重新唤起协程读取yield记录的上下文。这样形成了程序语言级别的多协程操作。php 5.5这里的yield也是同样的道理当程序运行到yield的时候当前程序就唤起协程记录上下文然后主函数继续操作只是php中没有使用如resume一样的关键字而是“在使用的时候唤起”协程。比如上例中的foreach迭代器就能唤起yield。所以上面的这个例子就能理解了。 其实照着引用yield来说好多内部函数特别是迭代有关的函数应该都有可能进行优化。或许后续会有yield版本和非yield版本的实现同一功能的函数把。 2 finally关键字 这个和java中的finally一样经典的try ... catch ... finally 三段式异常处理。 3 foreach 支持list() 对于“数组的数组”进行迭代之前需要使用两个foreach现在只需要使用foreach list了但是这个数组的数组中的每个数组的个数需要一样。看文档的例子一看就明白了。 1 2 3 4 5 6 7 8 9 10 ?php $array [ [1, 2], [3, 4], ]; foreach ($array as list($a, $b)) { echo A: $a; B: $b\n; } ? 4 empty() 支持自定义函数了 之前empty()中的参数是不能为函数的。现在可以了 1 2 3 4 5 6 7 8 9 10 ?php function foo(){ return false; } if(empty(foo())){ echo 11; } else { echo 12; } 5 非变量array和string也能支持下标获取了 1 2 3 4 5 6 7 8 ?php echo array(1, 2, 3)[0]; echo [1, 2, 3][0]; echo foobar[2]; ? 6 类名通过::class可以获取 1 2 3 4 5 6 7 8 ?php namespace Name\Space; class ClassName {} echo ClassName::class; echo \n; ? 7 增加了opcache扩展 使用opcache会提高php的性能你可以和其他扩展一样静态编译--enable-opcache或者动态扩展zend_extension加入这个优化项。 8 新的密码哈希 API A 新的密码哈希 API that makes it easier to securely hash and manage passwords using the same underlying library ascrypt() in PHP has been added. See the documentation for password_hash() for more detail. Apache 2.4 handler supported on Windows The Apache 2.4 handler SAPI is now supported on Windows. 改进 GD 对 GD 扩展做了多方面的改进包括 翻转支持使用新的 imageflip() 函数。高级裁剪支持使用 imagecrop() imagecropauto() 函数。WebP 的读写分别支持使用 imagecreatefromwebp() imagewebp() 。转载于:https://www.cnblogs.com/whoamme/p/3539323.html