摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。欢迎转载,转载请注明出处 。本文地址:http://imsiren.com/archives/535为了以后能够明白的开发PHP扩展..就一定要了解PHP的执行顺序..这篇文章就是为C开发PHP扩展做铺垫.web环境 我们假设为 apache.在编译PHP的时候,为了能够让Apache支持PHP,我们会生成一个mod_php5.so的模块.apache加载这个模块..在url访问.php文件的时候就会转给mod_php5.so模块来处理.这个玩意是什么..就是我们常说的SAPI英文名字是:Server abstraction A
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。欢迎转载,转载请注明出处 。本文地址:http://imsiren.com/archives/520趁热打铁 顺便说说 intval函数.该函数好像我们用的最多的就是在POST或者GET某个参数的时候,将其强制转换为int型,为了保证我们传入到SQL的时候是一个整形.,当然这只是其中一种用法..该函数接受两个参数,第一个是要转换的字符串,第二个要转换成的进制数,默认为十进制.我们先用PHP 来看看它的用法.class a{ public $b; function c(){ }
}
$a=new a()...
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。欢迎转载,转载请注明出处 。本文地址:http://imsiren.com/archives/516前面有一篇文章 讲的是PHP内核源码分析:isset与 empty但是好像忘记了一系列is函数如is_null,is_object,is_array,is_string,is_resource,is_bool,is_long,is_float今天就补充一下..他们的判断方法是一样的,只讲一个is_null其他的就能明白了.is_null是一个函数.定义在 ext/standard/type.c文件中.所有 类型的操作都在这个文件里
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处上一章讲到类的实现这一篇要详细讲讲PHP类的成员属性及方法.上一篇中曾经介绍到zend_do_begin_class_declaration这个函数,它用来创建并初始化一个zend_class_entry类的所有信息都保存在这个结构中,那么 属性和方法是怎么保存的呢?class Person{ public $name;
}还记得上一篇说过的zend_initialize_class_data函数吗?不记得也没关系.我们仔细来瞧瞧这个函数ze...
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客 在CSDN也会同步更新的哦.欢迎转载,转载请注明出处 这几天比较忙哦..没有时间写..周末了多写几篇吧.目前大部分语言都支持类.类是什么?类就是面向对象,简称OOP.英文名字 Object Oriented Programming.面向对象是什么?是一种编程架构.OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性、灵活性和扩展性.因为我们讲的不是这里只简单描述,如果你还不知道什么是类,什么是面向对象..那么这篇文章目前不适合你哦.[ph
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处上一节讲到 函数的参数下面继续分析函数的返回值..从根本来说,PHP的每个函数或方法都存在返回值,可能有的时候不写return,这个时候 会返回NULL.[php]function test(){ return 1;}[/php]经过分析找到token[c]T_RETURN ';' { zend_do_return(NULL, 0 TSRM LS...
阅读全文
摘要:在上一节中,分析了函数的定义,函数的定义只是将函数名注册到函数列表的过程.下面继续分析函数的参数.如果没有看就移步到>>原:PHP内核研究 函数的定义,,function $test($arg=11){}还是要看Lex的语法分析[c]unticked_function_declaration_statement: function is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$3, 0, $2.op_type, NULL TSRMLS_CC); } ...
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处PHP中,函数的定义 是用关键字 function来定义的.function hello($str){echo $str;}在/zend/zend_language_parse.y中找到 关键字 T_FUNCTION[c]function: T_FUNCTION { $$.u.opline_num = CG(zend_lineno); };[/c]发现这个只是用来保存当前函数设置的位置的..而真正parse的地方在哪里?我找了很久没找到,不...
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处PHP之所以发现这么迅速,有很大原因是因为数组数据非常好处理,而且它可以存储其他类型的数据数组的值存储在zvalue_value.ht字段中,ht是一个HashTable的数据有关于HashTable的知识请移步 >>HASH表和变量我们来详细说一下数组PHP里面所有的数据都离不开zval和HashTable,一个PHP很简单的数组初始化,在C语言里面实现的却没有那么简单.经过简单分析,找到数组的初始化的opcode在Zend/zend_vm
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处PHP内核函数里面有提供了两个函数用来检测 变量isset和empty这两个有什么区别?我们用PHP代码来检测一下[php]<?php//第一种var_dump(empty($a)); //true 为空var_dump(isset($a)); //false 未设置//第二种$b=0;var_dump(empty($b)); //true 为空var_dump(isset($b)); //true 已设置//第三种$c=0;unset...
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处在PHP里 有两个计算 字符串个数的函数一个是 strlen,一个是mb_strlen;先来看看帮助手册的定义strlenstrlen — 获取字符串长度int strlen ( string $string )返回给定的字符串 string 的长度。mb_strlenintmb_strlen( string$str[, string$encoding] )返回给定的字符串 string 的长度。encoding参数为字符编码。如果省略,则使用内部字符编
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处静态变量它可以是 静态全局变量,如果不调用unset,那么这个静态变量会一直存在,直到程序退出时才由Zend内存管理来释放它可以是 静态局部变量:在函数里定义,函数执行完后,该静态变量不会消失它可以是 静态成员变量:在类里定义,它可以在所有类的对象中共享例如[php]<?phpfunction test(){static $a=1;$a++;}test(); //$a=2test();//$a=3test();//$a=4[/php]最后 $a=4
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处常量什么是常量.常量就是不变的量.先看看常量的结构[c]typedef struct _zend_constant { zval value;//zval类型 int flags;//标示 是否大小写敏感 char *name;//常量名称 uint name_len;//长度 int module_number;//标示是用户定义的常量 不是系统常量} zend_constant;[...
阅读全文
摘要:PHP HASH表在PHP中,所有的数据 无论变量,常量,类,属性 都用Hash表来实现.先要说说 HASH表[c]typedef struct bucket { ulong h; /* Used for numeric indexing */ uint nKeyLength; //key长度 void *pData; //指向 Bucke保存的数据 指针 void *pDataPtr; //指针数据 struct bucket *...
阅读全文
摘要:声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。博客地址:PHP技术博客在CSDN也会同步更新的哦.欢迎转载,转载请注明出处SIREN_SETTING 我的PHP版本:PHP5.3源码我的系统环境 FreeBSD我的编辑器 VIM+CTAGS开始吧.php5.3源码包的目录其实还是很清晰的比较重要的有Zend:Zend引擎代码都在这里了.这里是PHP语言的运行环境空间(可能 不太确切).你也可以理解为解析PHP的编译器.如LEX的语法分析器等<!--more-->ext:这里是PHP官方扩展.比如 curl,Array数组以及PHP的内置函数sapi:这里是提供给
阅读全文