PHP内核学习-初期知识作者:协策网络-客服部 标签:电商网站建设 日期:2013年06月03日 类别:基础教程 |
||||
zval结构 Zend使用zval结构来存储PHP变量的值,该结构如下所示: 根据这个表格可以发现两个有意思的地方:首先是PHP的数组其实就是一个HashTable,这就解释了为什么PHP能够支持关联数组了;其次,Resource就是一个long值,它里面存放的通常是个指针、一个内部数组的index或者其它什么只有创建者自己才知道的东西,可以将其视作一个handle. 按照管理,在开始讲解之前我们先准备一下环境: 环境准备: 1. Linux环境,我们使用ubuntu/debian 这两个系统都可以 2. PHP源代码,我们讲解的代码为php-5.4.13.tar.gz,代码大家可以到php官网上面进行下载 3. webserver使用nginx,数据库为mysql 其中必须准备php源代码,nginx和mysql可以选择性安装 PHP源代码下载完成后,我们将源代码解压,先看一下源代码的目录结构: build: 这里面主要是一些和源码编译相关的文件 ext: PHP扩展源码路径 main: Zend: zend引擎实现目录 pear: php扩展以及应用仓库 sapi: 各种服务器抽象层代码,如apache,nginx等 TSRM: 线程安全资源管理器 test: 测试代码 源码查看的话,我们使用vim+ctags,如果您不明白这个是什么的话,麻烦自己百度一下。 知识准备: PHP源码中用到很多的宏定义,在开始之前,我们先温习一下宏相关的知识。 1. 双##号 这个是C语言中的连接符,我们来看一个例子你就明白了。 #define TEST(name) hello_##name 我们看一下调用:TEST(world)的结果为: hello_world 你看明白了吗! 2. 我们再来看一下但个的#号,这个符号的作用是在宏变量替换后的值前面后面添加双引号,我们看一个例子 #define TEST(str) #str 我们看一下调用: printf(TEST(HELLO WORLD));的结果为 printf("HELLO WORLD"); 3. #line 这个指令用来改变当前的行号和文件名 4. 还有一些常用的宏,这些我们会在以后用到时候进行介绍 您可能感兴趣的文章推荐 |
||||
|