存档

2013年7月 的存档

使用PHP opcodes看$php与”$php”的区别

2013年7月23日 没有评论

使用PHP opcodes看$php与”$php”的区别

# 首先下载最新版vld扩展:
wget http://pecl.php.net/get/vld-0.11.2.tgz
tar zxvf vld-0.11.2.tgz
cd vld-0.11.2/
phpize5
./configure
make
sudo make install
# Installing shared extensions:     /usr/lib/php5/20100525+lfs/

修改cli的配置文件激活vld扩展
/etc/php5/cli/php.ini
添加一行
extension=vld.so

测试开始

qiufe[......]

Read more

分类: PHP 标签: ,

像注释HTML一样注释PHP代码

2013年7月10日 没有评论

我们的目标, 是要实现如下的语法(以php-5.4.17为基础)

<?php
echo "1.这里正常执行\n";
<!--
echo "像注释HTML一样注释PHP代码\n";
echo "这行相当于在'/* */'体内\n";
echo "不会被输出\n";
-->                                                                                                                                              
echo "2.这里正常执行\n";

编辑Zend/zend_language_scanner.l

// 这是PHP的多行注释源码
<ST_IN_SCRIPTING>"/*"|"/**"{WHITESPACE} {
    int doc_com;
 
    if (yyleng > 2) {
        doc_com = 1;
        RESET_DOC_COMMENT();
    } else {
        doc_com = 0;
    }
 
    while (YYCURSOR < YYLIMIT) {
        if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
            break;
        }
    }
 
    if (YYCURSOR < YYLIMIT) {
        YYCURSOR++;
    } else {
        zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno));
    }
 
    yyleng = YYCURSOR - SCNG(yy_text);
    HANDLE_NEWLINES(yytext, yyleng);
 
    if (doc_com) {
        CG(doc_comment) = estrndup(yytext, yyleng);
        CG(doc_comment_len) = yyleng;
        return T_DOC_COMMENT;
    }
 
    return T_COMMENT;
}

在这基础上做[......]

Read more

分类: PHP源码 标签: ,

快速设置PHP的开发目录

2013年7月9日 1 条评论

PHP的源码放在了git上边,任何人都可以重建他的工作环境。
在项目开发时,我想能够在同一时间使用不同的PHP版本分支,如PHP5.3, PHP5.4,PHP5.5和PHP的稳定版本,我想快速地测试不同的PHP环境和配置运行的结果是怎么样的。如建立使用线程安全或调试模式打开或关闭。
一个简单的方[......]

Read more

分类: PHP 标签: