[Modern PHP] 第二章 新特性之七 内置HTTP服务器内置HTTP服务器你知道PHP从5.4.0开始有了一个内置的web服务器吗?对于那些只知道使用Apache或者nginx去预览PHP页面的PHP开发者们来说这又是一块未被发掘的宝石。虽然你不能在产品环境中使用PHP的内置web服务器,但是这个功能对于本地开发来说真是的一个完美的工具。无论我是否在写PHP代码,反正每天都会使用PHP的内置web服务器。我会使用它来预览Laravel和Slim Framework(译者注:框...
[Modern PHP] 第二章 新特性之六 Zend OPcacheZend OPcache字节码缓存技术对于PHP来说并不新鲜。我们很早就有了Alternative PHP Cache(APC)、eAccelerator、ionCube和XCache这些独立的扩展,它们都可以作为我们的可选方案。但是在PHP的每个核心发布版本中都没有它们的身影。直到现在PHP 5.5.0后,PHP才有了自己内置的字节码缓存:Zend OPcache。首先,让我来解释一下什么是字节码以及它的重要性。PHP是一种解释语言。当PHP解释器...
以往在ThinkPHP3.1版本之前,如果需要设置自动验证或者自动完成,一般来说必须定义在模型中,或者通过setProperty方法动态设置属性来完成,这样做的缺点是不太方便动态改变和调整。 ThinkPHP3.1版本在模型类中增加auto和validate两个连贯操作,用于动态设置自动完成和自动验证规则,现在可以在Action中使用: $validate = array(array(verify,require,验证码必须!), array(name,,帐号名称已经存在!,0,unique,1), ); $auto = arra...
ThinkPHP3.1版本对分组的支持如了如下改进: 每个分组支持独立的空模块 ThinkPHP3.0及以前版本的分组不支持定义独立的空模块,空模块EmptyAction只能放置在分组目录外层,而ThinkPHP3.1版则改进了每个分组可以定义独立的空模块,对于有不同分组不同空模块需求的情况就方便了。 公共Action和Model类优先加载分组目录 ThinkPHP3.0版本分组如果要继承一个公共的Action类或者Model类分组目录下面的,这个继承的公共类只能放到分组目录外...
以往版本的ThinkPHP中页面输出的过程是读取模板文件,然后进行模板解析(也支持调用第三方模板引擎解析),但是有一些情况,我们并没有定义模板文件,或者把模板文件保存在数据库里面,那么这种情况下进行页面输出的时候,我们是无法进行模板文件读取的,ThinkPHP3.1版本则针对这样的情况增加了内容解析输出的功能。 内置的模板引擎也进行了完善,如果传入的模板文件不存在的话,则会认为是传入的模板解析内容,因此,ThinkPHP3.1版...
1.模型(Model)层:默认的模型层由Model类构成,但是随着项目的增大和业务体系的复杂化,单一的模型层很难解决要求,从3.1开始推出了多层Model的支持,设计思路很简单,不同的模型层仍然都继承自系统的Model类,但是在目录结构和命名规范上做了区分,例如在某个项目设计中需要区分数据层、逻辑层、服务层等不同的模型层,我们可以在项目的Lib目录下面创建Model、Logic和Service目录,把对用户表的所有模型操作分成三层:数据层:M...
以往的ThinkPHP3.0版本对数组方式的查询条件会进行安全过滤(这是由于3.0强制使用了字段类型检测,所以数组方式的查询条件会强制转换为字段的设定类型),但是3.0版本并不支持字符串条件的安全过滤。而ThinkPHP3.1版本则增加了对条件字符串进行预处理的支持,让ORM的安全性更加得以保证。 一、使用where方法 Model类的where方法支持字符串条件预处理,使用方式: $Model->where("id=%d and username=%s and xx=%f",array($id,$user...
ThinkPHP3.1版增加了表单提交的字段合法性检测,可以更好的保护数据的安全性。这一特性是3.1安全特性中的一个重要部分。 表单字段合法性检测需要使用create方法创建数据对象的时候才能生效,具体有两种方式: 一、属性定义 可以给模型配置insertFields 和 updateFields属性用于新增和编辑表单设置,使用create方法创建数据对象的时候,不在定义范围内的属性将直接丢弃,避免表单提交非法数据。 insertFields 和 updateFields属性的...
ThinkPHP3.1.3版本有一些特性,还是值得关注的,下面来简单说下。 1、异常方面的改进 新版的ThinkPHP3.1.3重写了异常类ThinkException(其实是完全简化成了直接继承系统Exception类),并且把异常逻辑改进封装到Think类中。主要涉及到Think类的appException方法和halt函数。 并且改进后的异常处理支持系统致命错误的捕获,Think类增加了fatalError方法,原理是使用了 register_shutdown_function(array(Think,fatalError));因此可以...
ThinkPHP3.2.3版本数据库驱动采用PDO完全重写,配置和使用上面也比之前版本更加灵活和强大,我们来了解下如何使用。 首先,3.2.3的数据库配置信息有所调整,完整的数据库设置包括:代码如下: /* 数据库设置 */DB_TYPE => , // 数据库类型DB_HOST => , // 服务器地址DB_NAME => , // 数据库名DB_USER => , // 用户名DB_PWD => , ...
截止到目前为止,PHP官方已经发布了php7的RC5版本,预计在11月份左右会发布第一个正式版本!现在来说php7的重大特性肯定已经是定型了,不会再有什么变动了。后续一些版本的迭代主要也就是修修bug,优化之类的。下面就来说话我们一直期待的php7.0新特征吧。 1.标量参数类型声明现在支持字符串(string)、整型(int)、浮点数(float)、及布尔型(bool)参数声明,以前只支持类名、接口、数组及Callable 两种风格:强制转换模式(默认)与严...
PHP的版本一直在快速更新中,但是怎么感觉很多特性都没有用到是使用场景不大,还是因为PHP开发组因为自己的需要而产生了这些特性?回复内容:PHP的版本一直在快速更新中,但是怎么感觉很多特性都没有用到是使用场景不大,还是因为PHP开发组因为自己的需要而产生了这些特性?不是用不到,是你用不到。5.3 的 Namespace,这个应该常用吧。5.4 的 Traits,用过才知道。finally 如果你还是用 trigger_error 那么这个你确实用不到。arra...
Apache Core Enhancements:Unix Threading On Unix systems with POSIX threads support, Apache can now run in a hybrid multiprocess, multithreaded mode. This should improve scalability. New Build System The build system has been rewritten from scratch to be based on autoconf and libtool. This makes Apache's configuration system more similar to that of other packages. Multiprotocol Support Apache now h...
面向的读者 这篇文章的面向对象是所有对PHP5的XML新功能感兴趣的各个水平的PHP开发者。我们假定读者掌握XML的基本知识。然而,如果你已经在你的PHP当中使用了XML,那么这篇文章也会让你受益非浅。 介绍 在当今的互联网世界,XML已经不再是一个时髦词了,它已经被广泛的接受和规范的使用了。因此相对于PHP4,PHP5对于XML的支持更受到了重视。在PHP4中你面对的几乎都是非标准,API中断,内存泄漏以及其它不完全的功能。尽管有些不足已...
(一) Zend 2.0的诞生 现在的PHP4所使用的基本文法是被称之为Zend 引擎的脚本编译引擎。这个就是PHP4的优良机能的原因之一,是作为对PHP3的改进而生成的一种语言。大家一直认为,PHP4的性能根据当初的目标,比PHP3有了很大的提升,在网络编程的世界里占据了很大的份额。 开发了Zend 引擎的Zend公司是在开发PHP4的同时,由PHP3的主要开发者Zeev Suraski和Andi Gutmans所创立的企业合并而来的。Zend的名称是由Zeev和Andi的名字合起来...