PHP之深入理解
文章平均质量分 79
walxiaosage
我的初级博客:http://blog.sina.com.cn/u/1745044065
展开
-
深入浅出PHP(Exploring PHP)
从最初我们编写的PHP脚本->到最后脚本被执行->得到执行结果,这个过程,其实可以分为如下几个阶段:首先,Zend Engine(ZE),调用词法分析器(Lex生成的,源文件在 Zend/zend_language_sanner.l), 将我们要执行的PHP源文件,去掉空格,注释,分割成一个一个的token。然后,ZE会将得到的token forward给语法分析器(yacc生成,转载 2015-08-23 20:50:25 · 405 阅读 · 0 评论 -
注意PHP对字符串的递增运算
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2010/07/30/1682.html· 转载请注明出处有同学问了一个问题:1. 2. for($i ='A';$i 'Z';$i++) {3. echo$i;4.原创 2015-08-25 14:42:16 · 379 阅读 · 0 评论 -
Serialize/Unserialize破坏单例
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2011/03/18/1909.html· 转载请注明出处我们经常采用如下方式定义单列:1. class Singleton {2. privatestatic$instance = NULL;3转载 2015-08-25 14:44:50 · 261 阅读 · 0 评论 -
之弱类型变量(Variables inside PHP)
在PHP中,所有的变量都是用一个结构-zval来保存的,在Zend/zend.h中我们可以看到zval的定义:1. typedefstruct _zval_struct {2. zvalue_valuevalue;3. zend_uintrefcount;4. zend_uchartype;转载 2015-08-25 14:53:10 · 272 阅读 · 0 评论 -
深入理解ob_flush和flush的区别
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2010/04/15/1414.html· 转载请注明出处ob_flush/flush在手册中的描述,都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑…其实,他们俩的操作对象不同,有些情况下, flush转载 2015-08-25 14:37:53 · 533 阅读 · 0 评论 -
再一次, 不要使用(include/require)_once
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2012/09/12/2765.html· 转载请注明出处最近关于apc.include_once_override的去留,我们做了几次讨论, 这个APC的配置项一直一来就没有被很好的实现过.在这里,我想和大家在此分享下,这转载 2015-08-25 14:40:32 · 344 阅读 · 0 评论 -
请手动释放你的资源(Pleaserelease resources manually)
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2012/07/25/2662.html· 转载请注明出处我从来不认为这个问题是个问题,直到昨天.昨天晚上的时候,我提交了一个RFC,关于引入finally到PHP,实现这个功能的出发点很简单,因为我看见不少人的需求,转载 2015-08-25 14:51:17 · 272 阅读 · 0 评论 -
isset和is_null的不同
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/12/09/1180.html· 转载请注明出处今天有人问我isset和is_null啥区别,看手册上讲的话, isset和is_null的功能几乎完全”相反的一样”..是不是isset就是一个is_null的相反的别名?转载 2015-08-25 14:36:51 · 246 阅读 · 0 评论 -
深入理解PHP内存管理之谁动了我的内存
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2011/03/04/1894.html· 转载请注明出处首先让我们看一个问题:如下代码的输出,1. var_dump(memory_get_usage());2. $a ="laruence";3.转载 2015-08-25 14:44:09 · 264 阅读 · 0 评论 -
可序列化单例模式的遗留问题答案
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2011/03/18/1916.html· 转载请注明出处在上一篇文章Serialize/Unserialize破坏单例的最后,我留下了一个问题, 为了让大家能思考, 我就单独再写一篇给出答案.上一篇中,我们说到, 为了实现转载 2015-08-25 14:46:00 · 314 阅读 · 0 评论 -
深入理解PHP原理之Session Gc的一个小概率Notice
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2011/03/29/1949.html· 转载请注明出处如果在ubuntu/Debian下,采用apt安装的PHP,那么在使用Session的时候,就可能会有小概率遇到这个提示.1. PHP Notice:se转载 2015-08-25 14:46:56 · 547 阅读 · 0 评论 -
关于PHP浮点数你应该知道的(All ‘bogus’ about the float in PHP)
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2011/12/19/2399.html· 转载请注明出处PHP是一种弱类型语言,这样的特性, 必然要求有无缝透明的隐式类型转换, PHP内部使用zval来保存任意类型的数值, zval的结构如下(5.2为例):1. s转载 2015-08-25 14:47:23 · 274 阅读 · 0 评论 -
深入理解PHP原理之异常机制
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2010/08/03/1697.html· 转载请注明出处PHP的异常机制的原理是什么?在PHP每一个可独立执行的op array最后的ZEND_HANDLE_EXCEPTION是用来干什么呢?让我们从一个问题说起,上周的时候, b转载 2015-08-25 14:47:52 · 279 阅读 · 0 评论 -
PHP的新特性finally
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2012/08/16/2709.html· 转载请注明出处最近,我提交的关于finally的RFC:Supports finally keyword已经提交到了PHP主干,今天就给大家介绍一下这个新特性的背景,和使用方法.关转载 2015-08-25 14:50:02 · 400 阅读 · 0 评论 -
我们什么时候应该使用异常?
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2012/02/02/2515.html· 转载请注明出处先说个题外话:在公司做了俩件事, 是我觉得很有意义的, 第一就是成立了一个PHP邮件组,第二就是成立了一个Hi群.目前俩者都有超过500 phpers在里面.我一转载 2015-08-25 14:50:50 · 378 阅读 · 0 评论 -
之变量作用域(Scope in PHP)
我前面的文章(深入理解PHP原理之变量(Variables inside PHP))介绍了PHP变量的内部表示,但是,问题是,这些内部表示是如何和用户脚本中的变量联系起来的呢?也就是说,如果我在脚本中写下:1. 2. $var ="laruence";3. echo$var;4. ?>ZE是如何把我的变量var和内转载 2015-08-25 14:53:35 · 435 阅读 · 0 评论 -
之变量分离/引用(Scope in PHP)
在前面的文章中我已经介绍了PHP的变量的内部表示(深入理解PHP原理之变量(Variables inside PHP)),以及PHP中作用域的实现机制(深入理解PHP原理之变量作用域(Scope inside PHP))。这节我们就接着前面的文章,继续介绍PHP中变量分离和引用的概念:首先我们回顾一下zval的结构:1. struct _zval_struct {2转载 2015-08-25 14:54:14 · 414 阅读 · 0 评论 -
深入理解PHP之require/include顺序
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2010/05/04/1450.html· 转载请注明出处在大型的Web项目中, include_path是一个模块化设计的根本中的根本(当然,现在也有很多基于autoload的设计,这个不影响本文的探讨),但是正是因为include_转载 2015-08-25 14:38:58 · 280 阅读 · 0 评论 -
isset和is_null的不同
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/12/09/1180.html· 转载请注明出处今天有人问我isset和is_null啥区别,看手册上讲的话, isset和is_null的功能几乎完全”相反的一样”..是不是isset就是一个is_null的相反的别名?转载 2015-08-24 21:44:19 · 291 阅读 · 0 评论 -
PHP的单引号和双引号
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/08/19/338.html· 转载请注明出处经常有人问我,听说在PHP中处理字符串用单引号会快,那么如果存在变量替换的时候,是使用单引号连接快呢,还是双引号快呢?简单的回答,显然是苍白无力的。今天我们来做个实验,看看到底单引号和双引转载 2015-08-24 10:59:07 · 322 阅读 · 0 评论 -
如何写出最快的循环
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/04/07/670.html· 转载请注明出处你知道怎么写出最快的循环么?刚刚在晓东郭的blog看到一个有趣的问题” PHP中 $i++ 和 ++$i的区别 “:1. 方式一:2. 3转载 2015-08-24 17:13:06 · 301 阅读 · 0 评论 -
数组非数字键名引号的必要性
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/04/24/695.html· 转载请注明出处我看到过很多人操作数组的时候,对于数组中的非数字键名不使用引号,1. $array[key] =$value;我可以理解有些人可能会觉得这样的代码很”整洁”转载 2015-08-24 17:13:37 · 351 阅读 · 0 评论 -
PHP字符串比较
作者: Laruence( )本文地址: http://www.laruence.com/2009/02/21/662.html转载请注明出处我们在代码中用的最多的逻辑是什么?你知道如下的几段代码的布尔结果分别是什么么?var_dump("1" == "1e0");var_dump("1" == "0x1");var_dump("20" == "2e1");var_转载 2015-08-24 15:49:46 · 248 阅读 · 0 评论 -
数组非数字键名引号的必要性
作者: Laruence( )本文地址: http://www.laruence.com/2009/04/24/695.html转载请注明出处我看到过很多人操作数组的时候, 对于数组中的非数字键名不使用引号, $array[key] = $value;我可以理解有些人可能会觉得这样的代码很”整洁”, 并且也能正常执行.更甚至,如果他很”幸运的”php配置的转载 2015-08-24 16:35:04 · 169 阅读 · 0 评论 -
PHP CLI模式下的多进程应用
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/06/11/930.html· 转载请注明出处PHP在很多时候不适合做常驻的SHELL进程,他没有专门的gc例程,也没有有效的内存管理途径.所以如果用PHP做常驻SHELL,你会经常被内存耗尽导致abort而unhappy.转载 2015-08-24 17:14:09 · 492 阅读 · 0 评论 -
深入理解PHP原理之foreach
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/11/20/630.html· 转载请注明出处foreach是PHP中很常用的一个用作数组循环的控制语句。因为它的方便和易用,自然也就在后端隐藏着很复杂的具体实现方式(对用户透明)今天,我们就来一起分析分析,foreach是如转载 2015-08-24 21:07:19 · 1879 阅读 · 0 评论 -
深入理解PHP原理之Opcodes
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/06/18/221.html· 转载请注明出处最近要给Yahoo的同事们做一个关于PHP和Apache处理请求的内部机制的讲座,刚好写了些关于Opcodes的文字,就发上来了,这个文章基于 Sara Golemon大师的《Unde转载 2015-08-24 10:54:59 · 320 阅读 · 0 评论 -
PHP函数原理(Introspecting PHP Function)
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/08/12/164.html· 转载请注明出处在PHP中,函数分为俩种,· 一种是zend_internal_function, 这种函数是由扩展或者Zend/PHP内核提供的,用’C/C++’编写的,可以直接执行的函数。·转载 2015-08-24 10:57:05 · 380 阅读 · 0 评论 -
深入理解Zend SAPIs(Zend SAPI Internals)
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/08/12/180.html· 转载请注明出处SAPI:Server abstraction API,研究过PHP架构的同学应该知道这个东东的重要性,它提供了一个接口,使得PHP可以和其他应用进行交互数据。本文不会详细介绍每个PHP的转载 2015-08-24 10:57:50 · 389 阅读 · 0 评论 -
实现PHP的编译执行分离(separatingcompilation and execution)
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/08/14/250.html· 转载请注明出处刚刚在PHP群内和大家聊天,应承了大家要写一个关于如何实现PHP源码加密的文章,借着这会QA在冒烟的机会,就这个问题,我写点思路。我之前的文章介绍过, ZE(Zendengine)转载 2015-08-24 10:58:33 · 463 阅读 · 0 评论 -
揭秘TSRM(Introspecting TSRM)
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/08/03/201.html· 转载请注明出处如果你曾经做过PHP的扩展,或者研究过PHP的源码,你就会看到这个东西到处都在。但是关于这个东西是什么,却鲜有资料叙及。对于这个东西是什么,最常见的回答就是“你不用关心这个是什么,你只转载 2015-08-24 10:55:43 · 426 阅读 · 0 评论 -
PHP源码分析之Global关键字
作者: Laruence( )本文地址: http://www.laruence.com/2008/08/24/377.html转载请注明出处闲来无事,就系统的从PHP的词法分析,语法分析,opcodes生成,执行,整个流程,详细的分析了global关键字的实现。当你在脚本中写下: $var = "laruence"; function sample转载 2015-08-24 11:27:38 · 344 阅读 · 0 评论 -
PHP字符串比较
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/02/21/662.html· 转载请注明出处我们在代码中用的最多的逻辑是什么?你知道如下的几段代码的布尔结果分别是什么么?1. var_dump("1" =="1e0");2. var_dum转载 2015-08-24 17:12:31 · 351 阅读 · 0 评论 -
深入理解PHP原理之错误抑制与内嵌HTML
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2009/07/27/1020.html· 转载请注明出处PHP支持内嵌HTML的,那么对于PHP文件中, PHP标签外的HTML会怎么处理呢?它和直接输出HTML有什么区别么?PHP提供了一个错误抑制符’@',它是通过什么方式转载 2015-08-24 19:55:53 · 376 阅读 · 0 评论 -
深入理解PHP之数组(遍历顺序)
作者: Laruence( )本文地址: http://www.laruence.com/2009/08/23/1065.html转载请注明出处经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢?比如:$arr['laruence'] = 'huixinchen';$arr['yahoo'] = 2007;转载 2015-08-24 20:26:43 · 263 阅读 · 0 评论 -
PHP4中模拟类的析构函数
· 作者: Laruence( )· 本文地址: http://www.laruence.com/2008/09/04/498.html· 转载请注明出处最近做的一个项目是基于PHP4的,习惯了PHP5的面对对象,面对PHP4,难免会有很多不爽:不支持public, static, private, protected关键字,最转载 2015-08-24 17:11:54 · 419 阅读 · 1 评论