Press "Enter" to skip to content

我对PHP5.4的一个改进

插播个消息, 今天, 我终于获得了Zend的维护权限, Zend是PHP源代码中最为核心的部分, 也是最为敏感的地方, 对于这部分的权限控制的一直很严格. 但也是我加入PHP开发组以后, 一直想得到的权限. 🙂

好了, 言归正传, 今天对PHP5.4的Zend引擎做了一个改进, 改进了参数不兼容的报警信息. 具体的来说:

Filed in PHP应用, PHP源码分析
with 35 Comments

回答下在bugs.php上的一个问题

今天在bugs.php.net上, 有一个用QQ邮箱的用户发了一个问题(#55731).

他问, 为什么, 如下的代码, 会调用俩遍getter:

一开始, 我只是简单的回答了下, 和他在__get中再次获取$this->elmname有关系. 后来这个同学又要追问原因, 我只好用我那糟糕的英语给他解释.

可能用英语没太讲明白, 我现在用中文解释下吧.

Filed in PHP应用, PHP源码分析
with 17 Comments

关于做PHP扩展开发的一些资源

最近有个感觉, 越来越多的人开始从事PHP扩展开发的工作(越来越多的人来问问题了, 呵呵)

在这里先说声抱歉, 有的时候, 有的同学的邮件进了垃圾邮件没有办法及时回复.

为了方便大家, 我在这里罗列一些可能用到的资源.

Filed in 随笔
with 19 Comments

分享个开心的事情

Hi, 从我做PHP开始到现在, 已经差不多有6年的时间了.

在6月份的时候, 我加入了PECL官方扩展开发小组.

也就在前天, 我终于加入了PHP开发小组. 这个也算是一个阶段性的被肯定吧..

做开源事业, 真的是很单纯, 难以抑制的喜悦, 想和大家分享.

回顾这6年, 兴趣是我最大的动力, thanks all.

Filed in 随笔
with 61 Comments

Plua进入Pecl

一个月以前, 我开发了一个php扩展( PLua – Lua for PHP ), 支持在PHP中调用Lua脚本

后续, 发现在pecl中有一个类似的扩展, lua

在和lua的作者johannes, Andreas讨论过以后, 我们一致认为, 应该只保留一个lua扩展.

考虑到Plua的设计更加符合PHP思维习惯, 功能上也比lua要更加丰富, 大家就一致决定把plua作为新的lua标准扩展, 当然plua也会借鉴lua现在的一些优点.

目前plua已经整合到pecl lua的svn中, 等和johannes确认以后, 就会发布release: Lua

Filed in PHP Extension, PHP应用, 随笔
with 9 Comments

浏览器多tab打开同一URL串行化的问题

最近同事”神经病”同学的项目中, 发现一个问题.

用firefox打开多个tab, 每个tab都去请求同一个URL(尽量同时), 会发现, 这些请求, 会被浏览器串行化.

也就是说, 浏览器会在第一个页面请求结束以后, 再发起第二个请求,

比如对于如下脚本:

<?php
error_log("start . " . getmypid(). "\n");
sleep(5);
error_log("end . " . getmypid() . "\n");

Filed in GNU C/C++, PHP应用
with 11 Comments

PHP RFC: 让PHP的foreach支持list

上个月, 终于算加入了PHP developer team, 一直以来最大的障碍就是语言, 现在想起来, 当年真应该更加认真努力的去学习英语.

得到的第一个任务是: 解决一个feature request, 请求在allow foreach($array as list($a,$b)

大意是说, 希望PHP能支持如下语法:

<?php
foreach (array(array(24,2333), array(31,4666)) as $k => list($a, $b)) {
    printf("key:%s, a=>%s, b=>%s\n", $k, $a, $b);
}
/** output:
key:0, a=>24, b=>2333
key:1, a=>31, b=>4666
*/

实现这个功能, 入手点就是去改写PHP的语法分析逻辑, 具体的实现我会再后面附上对PHP5.4的patch.

Filed in PHP源码分析, 转载
with 8 Comments

Zend Parameters Parser新增类型描述符介绍

从PHP5.3开始, zend_parse_paramters_*函数新增了如下几个新的类型描述符:

f  - function or array containing php method call info (returned as
      zend_fcall_info and zend_fcall_info_cache)
H  - array or HASH_OF(object) (returned as HashTable*)
L  - long, limits out-of-range numbers to LONG_MAX/LONG_MIN (long)
Z  - the actual zval (zval**)
*  - variable arguments list (0 or more)
+  - variable arguments list (1 or more)

这也使得我们做扩展开发的时候, 能更加轻松的处理输入参数, 得到想要的值.

Filed in PHP应用, PHP源码分析
with 3 Comments