【[ModernPHP]第二章新特性之五闭包】教程文章相关的互联网学习教程文章

PHP5.3、5.4、5.5、5.6中的新特性「文章格式待调整」

PHP 5.6 1、可以使用表达式定义常量 https://php.com/manual/zh/migration56.new-features.php 在之前的 PHP 版本中,必须使用静态值来定义常量,声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。 f()."\n";echo C::SENTENCE;?> 可以通过 const 关键字来定义类型为 array 的常量。 2、使用 ... 运算符定义变长参数函数 ...

Php5.5新特性Generators详解

在**PHP5.5.0**版本中,新增了生成器*(Generators)*特性,用于简化实现迭代器接口*(Iterator)*创建简单的迭代器的复杂性。 通过生成器,我们可以轻松的使用foreach迭代一系列的数据,而不需要事先在内存中构建要被迭代的对象,大大减少了内存开销。 当生成器函数被调用的时候,它会返回一个可迭代的对象,当对该对象进行迭代的时候,PHP将会在需要的时候调用生成器函数,并且在生成器使用新增的关键字yield产生一个新的值的时候,...

[ModernPHP]第二章新特性之五闭包

闭包 闭包和匿名函数是从PHP 5.3.0开始出现的,这是我最喜欢也是用的最多的PHP功能。听到这些名称心里特别没底(至少我第一次听到时是这么认为的),但是事实上真的很好理解。它们是每个PHP开发者们的工具箱中必备的最有用的工具。 闭包作为一个函数,在创建时会封装外部的状态。即使最初创建闭包时的环境已经不存在了,封装的状态也会一直保存在闭包中。这是一个不太好掌握的概念,一旦你能够弄明白,感觉就像人生翻开了新...

[ModernPHP]第二章新特性之七内置HTTP服务器

内置HTTP服务器 你知道PHP从5.4.0开始有了一个内置的web服务器吗?对于那些只知道使用Apache或者nginx去预览PHP页面的PHP开发者们来说这又是一块未被发掘的宝石。虽然你不能在产品环境中使用PHP的内置web服务器,但是这个功能对于本地开发来说真是的一个完美的工具。 无论我是否在写PHP代码,反正每天都会使用PHP的内置web服务器。我会使用它来预览Laravel和Slim Framework(译者注:框架的作者就是本书的作者Josh Lockhar...

[ModernPHP]第二章新特性之六ZendOPcache

Zend OPcache 字节码缓存技术对于PHP来说并不新鲜。我们很早就有了Alternative PHP Cache(APC)、eAccelerator、ionCube和XCache这些独立的扩展,它们都可以作为我们的可选方案。但是在PHP的每个核心发布版本中都没有它们的身影。直到现在PHP 5.5.0后,PHP才有了自己内置的字节码缓存:Zend OPcache。 首先,让我来解释一下什么是字节码以及它的重要性。PHP是一种解释语言。当PHP解释器执行一个PHP脚本时,解释器解析PHP的...

PHP7新特性的介绍

截止到目前为止,PHP官方已经发布了php7的RC5版本,预计在11月份左右会发布第一个正式版本!现在来说php7的重大特性肯定已经是定型了,不会再有什么变动了。后续一些版本的迭代主要也就是修修bug,优化之类的。下面就来说话我们一直期待的php7会有那些主要的变化了。。。 新特性预览 ZEND引擎升级到Zend Engine 3,也就是所谓的PHP NG 增加抽象语法树,使编译更加科学 64位的INT支持 统一的变量语法 原声的TLS - 对...

Laravel5.2新特性系列--表单数组输入验证功能实现

Laravel 5.2 新增表单 数组 输入验证,听起来很懵?下面我们以一个具体例子来演示这一功能。 首先在 routes.php 定义相应路由: Route::get(form,TestController@form);Route::post(form/validate,TestController@validate); 然后使用Artisan命令创建对应控制器: php artisan make:controller TestController 编辑生成的 TestController.php 文件内容如下: <?phpnamespace App\Http\Controllers;use Illu...

Laravel5.2新特性系列--隐式路由模型绑定功能实现

Laravel5.1 中已经提供了路由模型绑定功能,而在 Laravel5.2中,这一功能实现变得更加简单。 1、 路由模型绑定的基本使用 通常我们在URL路由中通过如下方式绑定模型: Route::group([middleware => [web]], function () { Route::get(/user/{id},function($id){ $user = \App\User::findOrFail($id); dd($user); });}); 我一般也是这么实现的,但是如果有一种途径可以去掉 findOrFail这一行而...

Laravel5.2新特性系列--中间件组的定义及使用

不管你创建的Laravel应用体量有多大,路由文件 routes.php的体积都会随之变得越来越大。对我而言创建一个新应用首先要做的就是根据业务逻辑对路由文件进行拆分和分组,比如“admin”、“auth”、“public”等。通常分组的每个部分都有其对应的中间件设置,例如, admin会用到一个 auth中间件,API分组可能会有不同的 auth中间件,并且会有指定的限制访问频率的中间件。 Laravel5.2 引入了中间件组的概念,这是一个为路由规则使...

现代PHP新特性系列(一)--命名空间

1、什么是命名空间 如果你只需要知道现代PHP特性中的一个,那就应该是命名空间。命名空间在PHP5.3.0中引入,其作用是按照一种虚拟的层次结构组织PHP代码,这种层次结构类似操作系统中文件系统的目录结构。命名空间是现代PHP组件生态的基础,现代的PHP组件框架代码都是放在各自全局唯一的厂商命名空间中,以免和其他厂商使用的常见类名冲突。 下面我来看看真实的PHP组件是如何使用命名空间的。Laravel框架中的Http组件用...

现代PHP新特性系列(三)--Trait概览

Trait 是PHP 5.4引入的新概念,看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么;提供模块化实现。Trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。 为什么使用Trait PHP语言使用一种典型的单继承模型,在这种模型中,我们先编写一个通用的根类,实现基本的功能,然后扩展这个根类,创建更具体的子类,直接从...

现代PHP新特性系列(四)--生成器的创建和使用

1、概述 生成器 是PHP 5.5 引入的新特性,但是目测很少人用到它,其实这是个非常有用的功能。 生成器和迭代器有点类似,但是与标准的PHP迭代器不同,PHP生成器不要求类实现Iterator接口,从而减轻了类的开销和负担。生成器会根据需求每次计算并产出需要迭代的值,这对应用的性能有很大的影响:试想假如标准的PHP迭代器经常在内存中执行迭代操作,这要预先计算出数据集,性能低下;如果要使用特定方式计算大量数据,如操作...

现代PHP新特性系列(五)--闭包和匿名函数

1、概述 闭包 和 匿名函数 在PHP 5.3.0中引入,这两个特性非常有用,每个PHP开发者都应该掌握。 闭包是指在创建时封装周围状态的函数,即使闭包所在的环境的不存在了,闭包中封装的状态依然存在。 匿名函数其实就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP函数对象那样传递。不过匿名函数仍然是函数,因此可以调用,还可以传入参数,适合作为函数或方法的回调。 注:理论上讲闭包和匿名...

PHP5.5中的新特性及被弃用的功能函数总结

PHP5.5新特性及与php5.4的区别总结 现在,让我们来看看PHP5.5 可能会新增的功能: 1、放弃对Windows XP和2003 的支持 2.弃用e修饰符 e修饰符是指示preg_replace函数用来评估替换字符串作为PHP代码,而不只是仅仅做一个简单的字符串替换。不出所料,这种行为会源源不断的出现安全问题。这就是为什么在PHP5.5 中使用这个修饰符将抛出一个弃用警告。作为替代,你应该使用preg_replace_callback函数。你可以从RFC找到更多关于这个变...

PHP5.4中的新特性及被弃用的功能函数总结

PHP 5.4中的新特性及被弃用的功能函数概述总结:一、PHP5.4新增特性1. 内存和性能改进:大型 PHP 应用程序中可节省 20-50% 的内存。通过各种优化使性能提高 10-30% 2. 支持特性Trait 3. 精简数组语法,可以定义短数组 4. 函数数组解除引用,支持Array dereferencing, 5. 实例方法调用 6. 闭包绑定 7. 对象即函数 8. 内置 Web 服务器 (CLI) 9. 原生会话处理程序接口 10. JsonSerializable 接口 11. 二进制表示法 12. 改进了错误消息 1...