
PHP
文章平均质量分 62
lamp_yang_3533
你又可以了
展开
-
PHP 中的正则表达式详解
简介正则表达式(Regular Expression),也简称为 RE、Reg、RegEx 或 RegExp。正则表达式的作用是用来查找或者替换符合某种模式(规则)的字符串。正则表达式是一个从左到右匹配目标字符串的模式(pattern)。大多数字符自身就代表一个匹配自身的模式。在 PHP 中,有两种处理正则表达式的扩展库。POSIX 扩展PCRE 扩展POSIX 扩展自 PHP 5.3.0 起, ...原创 2018-06-03 16:25:29 · 2047 阅读 · 1 评论 -
PHP7 不向后兼容的变更
错误和异常处理相关的变更在 PHP 7 中,很多致命错误以及可恢复的致命错误,都被转换为异常来处理了。 这些异常继承自 Error 类,此类实现了 Throwable 接口 (所有异常都实现了这个基础接口)。这也意味着,当发生错误的时候,以前代码中的一些错误处理的代码将无法被触发。 因为在 PHP 7 版本中,已经使用抛出异常的错误处理机制了。 (如果代码中没有捕获 Error 异常,那么会引发致...原创 2018-04-10 14:13:17 · 2003 阅读 · 0 评论 -
PHP7 弃用的功能
PHP4 风格的构造函数PHP4 风格的构造函数(方法名和类名一样)将被弃用,并在将来移除。 如果在类中仅使用了 PHP4 风格的构造函数,PHP7 会产生 E_DEPRECATED 警告。 如果还定义了 __construct() 方法则不受影响。<?phpclass foo { function foo() { echo 'I am the constructo...原创 2018-04-09 13:07:35 · 555 阅读 · 0 评论 -
PHP7 的特性
标量类型声明标量类型声明 有两种模式:强制 (默认)模式和 严格模式。现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。它们扩充了PHP5中引入的其他类型:类名,接口,数组和 回调类型。<?php// 强制模式function sumInts(int ...$ints){ ...原创 2018-04-08 09:54:01 · 425 阅读 · 1 评论 -
PHP5.3、PHP5.4、PHP5.5、PHP5.6的新特性
1. PHP5.3中的新特性1.1 支持命名空间(namespace)毫无疑问,命名空间是PHP5.3所带来的最重要的新特性。在PHP5.3中,可以用命名空间防止代码的冲突,命名空间的分隔符为 \ 反斜线。1.2 通过static关键字,实现方法的延迟静态绑定在PHP中,我们可以在类中通过self关键字或者CLASS来判断或调用当前类。但有一个问题,如果我们是在子类中调用,得到的结果将是父类。因为在原创 2016-10-27 02:44:44 · 6568 阅读 · 1 评论 -
PHP中的自定义常量与类常量
1. 自定义常量常量的值只能是标量数据(boolean,integer,float 和 string)或 null。常量一旦被定义,就不能被重新定义或者取消定义。有两种定义方式:用define()函数来定义常量define('STATUS', 3); // 如果第三个参数设置为true,则大小写不敏感echo STATUS;用c原创 2016-04-17 19:30:40 · 4642 阅读 · 0 评论 -
PHP中的设计模式
工厂模式工厂模式(Factory)允许你在代码执行时,动态地创建不同的对象。它之所以被称为工厂模式是因为它负责“生产”对象。工厂方法的参数是你要创建的对象所对应的类名称。<?phpclass Example{ public static function factory($type) // 工厂方法 { if (include_once '...原创 2016-11-05 13:44:50 · 431 阅读 · 0 评论 -
session和cookie的用法以及它们的区别
cookie和session都是会话变量,主要作用都是在整个会话过程中,实现数据的跨页面访问。会话变量的用途:验证用户的身份(是否已经登录)实现数据的跨页面访问(购物车功能等)会话变量和普通变量的区别:会话变量可以跨页面访问(超全局变量)cookie会话变量只能保存基本数据类型(int float string bool)的变量值,ses原创 2016-07-16 18:10:38 · 2764 阅读 · 0 评论 -
$_POST、input数据流和$HTTP_RAW_POST_DATA的区别
HTTP 协议是建立在 TCP/IP 协议之上的应用层规范,它把 HTTP 请求分为三个部分:状态行、请求头、消息主体。协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据使用什么编码方式。服务端通常是根据请求头(headers)中的 Content-Type 来获知请求中的消息主体是用何种方式编码的,再对消息主体进行解析。当客户端通过原创 2016-08-31 13:50:47 · 6221 阅读 · 0 评论 -
PHP中如何设置error_reporting错误报告级别
错误报告级别:指定了在什么情况下,脚本代码中的错误(这里的错误是广义的错误,包括E_NOTICE注意、E_WARNING警告、E_ERROR致命错误等)会以错误报告的形式输出。设置错误报告级别的方法:1. 修改PHP的配置文件php.ini这种方式设置error_reporting后,重启web服务器,就会永久生效。这里以xamp原创 2016-03-27 00:43:34 · 16661 阅读 · 0 评论 -
Closure 类
简介Closure 类是用于代表匿名函数的类。匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象。Closure 类过去常常用于实现细节,现在可以依赖它做更多的事情。自 PHP 5.4 起,Closure 类带有一些方法,允许对创建后的匿名函数进行更多的控制。Closure 类被 final 关键字所修饰,故不能被继承。Closure 类和匿名函数的关系Closure 类是用于代表匿名函...原创 2018-04-10 20:28:15 · 772 阅读 · 0 评论 -
PHP 中 self、static、$this 的区别 & 后期静态绑定详解
self、static 和 $this 的区别为了更好地理解 self、static 和 $this 的区别,先来看一个示例。<?phpclass A { protected $name = 'A'; static $alias = 'a'; const HASH = 'md5'; public function dd() { echo ...原创 2018-04-12 13:33:07 · 7587 阅读 · 1 评论 -
PSR PHP 标准规范
简介PSR 是 PHP Standard Recommendations 的简写,即 PHP 标准规范。PSR 由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。PHP FIG,FIG 是 Framework Interoperability Group(框架可互用性小组)的缩写,由几位开源框架的开发者成立于 2009 年,从那开始也选取了很多其他成员进来(包括但不限于 L...翻译 2018-04-30 14:04:40 · 372 阅读 · 0 评论 -
Composer 的常用命令
selfupdate更新 composer 本身,请经常执行 composer selfupdate 以保持 Composer 一直是最新版本。composer selfupdate等价于composer self-updatedumpautoload当我们更改了 composer.json 文件中的 autoload 时,需要执行 composer dumpaut...原创 2018-05-07 23:03:08 · 15574 阅读 · 0 评论 -
PSR-6 缓存接口规范
简介缓存是提升应用性能的常用手段,是框架中最通用的功能,每个框架可能会有自己的缓存库。这些差别使得开发人员不得不学习多种系统,缓存库的开发者同样面临一个窘境,是只支持有限数量的几个框架还是创建一堆庞 大的适配器类。一个通用的缓存系统接口可以解决这些问题。框架和库的开发人员知道缓存系统会按照他们预期的方式工作,缓存系统的开发人员不用去开发各种各样的适配器,只需要实现单一的接口即可。PSR-6 的目标...翻译 2018-05-06 13:24:09 · 447 阅读 · 0 评论 -
PSR-4 自动加载规范
简介PSR-4 Autoloader,指的是 PHP 的自动加载规范。PSR-4 是从文件路径自动加载对应的类的规范。它是可互相协作的,可用于补充其他的自动加载规范(包括 PSR-0)。此外,本规范还描述了自动加载的文件如何放置的问题。规范说明这里的类指的是 class、interface、trait 以及其他类似的结构。完整的类名一个完整的类名的形式是:\<命名空间>(\<子命...翻译 2018-05-05 23:27:49 · 489 阅读 · 0 评论 -
PSR-3 日志接口规范
简介PSR-3 制定了日志类库的通用接口规范。本规范的主要目的,是为了让日志类库以简单通用的方式,通过接收一个 Psr\Log\LoggerInterface 对象,来记录日志信息。框架以及CMS内容管理系统如有需要,可以 对此接口进行扩展,但需遵循本规范, 这才能保证在使用第三方的类库文件时,日志接口仍能正常对接。规范说明基本规范LoggerInterface 接口对外定义了八个方法,分别用来记...翻译 2018-05-04 23:27:22 · 254 阅读 · 0 评论 -
PSR-2 编码风格规范
简介PSR-2 是 PSR-1 基础编码规范的继承与扩展。本规范希望通过制定一系列规范化 PHP 代码的规则,以减少在浏览不同作者的代码时,因代码风格的不同而造成的不便。本规范的价值在于我们都遵循这个编码风格,而不是在于它本身。概览代码 必须 遵循 PSR-1 中的编码规范 。代码 必须 使用 4 个空格符而不是「Tab 键」进行缩进。每行的字符数 应该 软性保持在 80 个之内,理论上 一定不可...翻译 2018-05-03 23:43:26 · 370 阅读 · 0 评论 -
Composer 中的自动加载
简介对于文件的自动加载,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,就会得到自动加载的支持。require 'vendor/autoload.php';这使得你可以很容易的使用第三方代码。例如,如果你的项目依赖 monolog,你通过 composer 安装了 monolog 之后,就可以直接在其他文件中使用 monolog 类库,它们都会...原创 2018-05-09 22:53:12 · 1049 阅读 · 0 评论 -
Composer 中依赖包的版本约束和稳定性
版本约束通过 Composer 来安装依赖包,关于依赖包的版本约束,可以使用多种不同的方式。版本格式版本格式:主版本号.次版本号.修订版本号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改。 次版本号:当你做了向下兼容的功能性新增。 修订版本号:当你做了向下兼容的问题修正。先行版本号及版本编译元数据可以放到“主版本号.次版本号.修订版本号”的后面,作为延伸。...原创 2018-05-08 22:42:56 · 5543 阅读 · 0 评论 -
PSR-1 基础编码规范
简介PSR-1 制定了代码基本元素的相关标准,以确保共享的 PHP 代码间具有较高程度的技术互通性。为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下:必须 (MUST):绝对,严格遵循,请照做,无条件遵守;一定不可 (MUST NOT):禁令,严令禁止;应该 (SHOULD) :强烈建议这样做,但是不强求;不该 (SHOULD NOT):强烈不建议这样做,但是不强求;可以 (MAY) 和 ...翻译 2018-05-01 12:51:15 · 301 阅读 · 0 评论 -
PHP 的访问控制(可见性)、类常量和继承
访问控制(可见性)PHP 中,对类中的成员(属性和方法)的访问控制,是通过以下三个访问修饰符来实现的。public(公有的)protected(受保护的)private(私有的)public、protected 和 private 可以控制类成员的可见性(visibility)。被定义为 public 的类成员,可以在任何地方被访问(任何地方可见)。被定义为 protected 的类成员,可以在其...原创 2018-04-13 19:17:20 · 2248 阅读 · 0 评论 -
Windows 环境下如何安装 Composer
什么是 ComposerComposer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库(各种 PHP 的第三方依赖包,甚至是 PHP 框架),它可以为你轻松快捷地安装它们。此外,Composer 会为项目中的所有 PHP 组件自动生成符合 PSR 标准的自动加载器,抽象了依赖管理和自动加载。安装 Composer准备工作:安装 Composer 前,请确保已经正...原创 2016-07-29 18:50:58 · 5257 阅读 · 0 评论 -
PHP中正则表达式的用法
1. 正则表达式的定义 正则表达式就是记录某种文本规则的字符串。 如: $pattern = '/^[a-zA-Z]\w{5,9}$/';2. 正则表达式的构成 五大组成部分: 字符簇、限定符、定位符、子表达式和模式修饰符。字符簇:普通字符组成的集合(特殊字符需要转义,比如\.和\-)。[abc] 匹配abc中的任何一个字母[a-z] 匹原创 2015-11-26 20:31:01 · 790 阅读 · 0 评论 -
如何在多台web服务器上共享session?
比如:现在有三台php服务器,且实现了负载均衡,如何让这三台web服务器共享session数据?session数据默认是以文件的形式保存在web服务器的磁盘上,一般都是用户登录成功的时候,保存session数据。同一个用户登录后,就会将session保存在某个web服务器上,假设是保存在服务器A上,该用户访问网站的其他页面时,可能请求的就是服务器B或服务器C,但服务器B或服务器C上并没有该原创 2016-07-21 16:38:23 · 13048 阅读 · 0 评论 -
PHP中变量的声明、作用范围和解析规则
1. 什么是变量变量即可以变化的量,在脚本执行期间可以变化的量,变量的作用是保存值。2. 声明变量PHP 中的变量,用一个美元符号 $ 后面紧跟变量名(变量标识符)来表示。变量名是区分大小写的。变量名可以由字母、数字和下划线组成,且必须以字母或下划线开头。如:$userId = 1;$a = $b = $c = 'lily';变量名最好含义明确,原创 2016-03-20 03:42:20 · 1316 阅读 · 0 评论 -
PHP中支持的原始数据类型和伪类型
1. PHP支持八种原始数据类型四种标量类型:boolean(布尔型,也写作bool)布尔型是最简单的数据类型,只有两个值 true 和 false(不区分大小写)。可以使用 (bool) 或 (boolean) 将某个值的类型强制转换为布尔型,但是,很多情况下,并不需要手工进行强制转换。因为当运算符、函数或流程控制结构中需要一个布尔值时,会自动转换。以下七种值,当转换为boo原创 2016-03-20 00:23:49 · 782 阅读 · 0 评论 -
PHP中实现页面刷新或跳转的方法
通过HTML的标签meta实现页面刷新实现页面跳转通过php的header()实现页面跳转,重定向header("location:目标文档的URL");通过JS实现页面跳转 alert('内容'); location.href='目标文档的URL';原创 2016-03-30 22:09:58 · 20034 阅读 · 0 评论 -
htmlspecialchars和htmlentities对json数据的影响
1. htmlspecialchars()该函数的第一个参数是必选参数,类型为字符串,它可以将字符串中的特殊字符转换为对应的html实体,返回转换后的字符串。它可以转换的特殊字符只有五个,分别是: (>)、' (')、" (") 和 & (&)2. htmlentities()该函数的作用和htmlspecialchars类原创 2016-03-18 00:51:12 · 2654 阅读 · 0 评论 -
PHP中的命名空间
1. 命名空间概述命名空间是一种封装事物,从而避免同名冲突的手段。就如同操作系统中,用目录将文件和文件夹分组,防止文件或文件夹同名冲突一样。在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码(如类或函数)时碰到的两类问题:用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。为很长的标识符名称创建一个别名或简短的名称,提高源代码原创 2016-03-17 22:11:28 · 692 阅读 · 0 评论 -
PHP中的魔术方法
PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。因此,在定义类方法时,除了下述魔术方法外,建议不要以 __ 为前缀。__construct():构造方法或构造函数具有构造函数的类会在每次创建新对象时,先调用此方法。因此,非常适合在使用对象之前做一些初始化操作。注意:如果子类中定义了构造函数则不会隐式调用其父类的构造函数,要执行父类的构造函数,需要原创 2016-03-16 11:20:38 · 581 阅读 · 0 评论 -
public、protected、private 三种访问修饰符的区别
public(公有的)、protected(受保护的)、private(私有的),这三个访问修饰符,用于修饰类的成员(属性和方法)的可见性:public 的类成员,可以在任何地方被访问(任何地方可见)。protected 的类成员,可以在其自身、子类和父类的内部访问。private 的类成员,只能在其定义的类内部访问。只有 public 和 protected 的类成员,才可以被继承,privat...原创 2016-03-04 09:37:56 · 3773 阅读 · 0 评论 -
PHP代码优化的方法
PHP代码优化的目的是为了提高PHP程序的执行效率,编写PHP代码时,可以从以下方面着手优化:1. 用单引号代替双引号来包含字符串2. 如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。3. 用echo代替print4. 及时注销不用的变量,尤其是大数组,以便释放内存5. 尽量避免使用__get(),__set(),__autoload()原创 2016-03-01 11:56:11 · 753 阅读 · 0 评论 -
如何对PHP文件进行加密——ZendGuard加密与ZendLoader解密
Zend Guard是目前市面上最成熟的PHP源码加密产品,经过本人搜集资料,亲身测试后,总结了如何利用Zend Guard对PHP文件进行加密,以及如何利用Zend Loader对加密后的PHP文件进行解密。原创 2015-11-01 22:43:47 · 35683 阅读 · 3 评论 -
PHP中抽象方法、抽象类和接口的用法
1. 抽象方法在类中,没有方法体的方法就是抽象方法。abstract 可见性 function 方法名称(参数1,.....); // 如果没有显示地指定可见性,则默认为public如:public function hello($args);abstract function work(); // 修饰符abstract,也原创 2016-03-08 20:29:31 · 6578 阅读 · 3 评论 -
PHP中单引号和双引号的区别及PHP中常用的转义字符
1. PHP中单引号和双引号的区别双引号可以解析变量,单引号不能解析变量;双引号和单引号可以互相嵌套;双引号当中包含单引号,单引号当中又包含变量时,变量会被解析,单引号会被原样输出;双引号可以解析所有的转义字符,单引号只能解析 \ 和 ' 本身的转义;单引号的执行效率比双引号要高,故当可以使用单引号代替双引号时,尽量使用单引号;注意:json字符串中,如果显原创 2016-03-20 23:31:33 · 2076 阅读 · 0 评论 -
PHP 中的时区设置 date.timezone
对于相同的时间戳,如果时区不同,得到的日期时间字符串也会不同。因此,设置正确的时区非常必要。不同的时区,会影响 date('Y-m-d H:i:s', time()) 或类似函数的值。设置时区有以下两种方法:1. 修改配置文件 php.ini 中 date.timezone 的值date.timezone=Asia/Shanghai或date.timezone=Asia/Chongqing将其设置...原创 2016-04-02 15:33:41 · 12180 阅读 · 0 评论 -
表单提交方式中的get和post有什么区别?
get是表单的默认提交方式,会把数据附加到表单的action属性所指向的URL中,在URL中可见,安全性较差;post会把数据放到http的包体中,用户一般看不到,安全性较好。get传递的数据量受URL长度的限制,故数据量较小,一般只有几kb;而post传递的数据量受php.ini的限制,数据量较大,如果有文件上传的话,表单的提交方式一定要用post。get方式会被缓存下来,可能有安全性问题,而p原创 2016-06-28 13:25:08 · 1256 阅读 · 0 评论 -
PHP中的魔术常量、预定义常量和预定义变量
1. 魔术常量PHP中有八个魔术常量,它们的值会随着它们在代码中的位置的改变而改变。这些特殊的常量不区分大小写。__LINE__ :返回文件中的当前行号。也可写成__line__。__FILE__:返回当前文件的绝对路径(包含文件名)。__DIR__:返回当前文件的绝对路径(不包含文件名),等价于 dirname(__FILE__)。__FUNCTION__:返回当前函数(或方法)的名原创 2016-03-16 22:44:56 · 6369 阅读 · 0 评论 -
include和require加载文件的区别
include引入文件时,如果引入的文件发生错误,会产生一条警告信息,后续的代码会继续执行。require引入文件时,会更加严谨一些,如果引入的文件发生错误,会抛出一个致命的错误,并中断后续代码的执行。因此,我们常常用require引入一个非常重要的文件。原创 2016-05-19 21:50:02 · 489 阅读 · 0 评论