收藏 分销(赏)

PHP扩展开发-分享会.pptx

上传人:s4****5z 文档编号:12562556 上传时间:2025-10-31 格式:PPTX 页数:17 大小:112.32KB 下载积分:10 金币
下载 相关 举报
PHP扩展开发-分享会.pptx_第1页
第1页 / 共17页
PHP扩展开发-分享会.pptx_第2页
第2页 / 共17页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2015/4/13,#,PHP,扩展开发,更多内容,请见,2015-04-14,下午分享会,NTS or TS,None Thread Safe(,非线程安全,),Thread Safe(,线程安全,),开发环境,Windows OR Linux,X86 OR X64,Windows,环境,VC6,(,Microsoft Visual C+6.0,),VC9,(,Microsoft Visual Studio 2008,),VC11,(,Microsoft Visual Studio 2012,),Cygwin64 OR Cygwin_X86,Php-deps,php-sdk-binary-tools,Php,源码,Windows,开发流程,Buildconf,configure,ext_skel_win32.php,参数,-extname,扩展名称,-proto,定义文件,编译,Linux,开发流程,ext_skel,-extname,扩展名称,-proto,定义文件,config.m4,PHP_ARG_WITH(example,for example support,-with-example=FILE Include example support.File is the optional path to example-config),PHP_ARG_WITH(example-extra,for extra libraries for example,-with-example-extra=DIR example:Location of extra libraries for example,no,no),Linux,开发流程,Phpize,configure,-with-php-config=/usr/local/php/bin/php-config,Make,Make install,函数声明宏,语义,PHP_MINIT_FUNCTION(),当,PHP,被装载时,模块启动函数即被引擎调用。这使得引擎做一些例如资源类型,注册,INI,变量等的一次初始化。,PHP_MSHUTDOWN_FUNCTION(),当,PHP,完全关闭时,模块关闭函数即被引擎调用。通常用于注销,INI,条目,PHP_RINIT_FUNCTION(),在每次,PHP,请求开始,请求前启动函数被调用。通常用于管理请求前逻辑。,PHP_RSHUTDOWN_FUNCTION(),在每次,PHP,请求结束后,请求前关闭函数被调用。经常应用在清理请求前启动函数的逻辑。,PHP_MINFO_FUNCTION(),调用,phpinfo(),时模块信息函数被呼叫,从而打印出模块信息。,PHP,的变量,typedef struct _zval_struct,zvalue_value value;,zend_uint refcount;,zend_uchar type;,zend_uchar is_ref;,zval;,typedef union _zvalue_value,long lval;,double dval;,struct,char*val;,int len;,str;,HashTable*ht;,zend_object_value obj;,zvalue_value;,typedef struct _zval_struct zval;,宏,访问对象,C,类型,Z_LVAL,Z_LVAL_P,Z_LVAL_PP,整型值,long,Z_BVAL,Z_BVAL_P,Z_BVAL_PP,布尔值,zend_bool,Z_DVAL,Z_DVAL_P,Z_DVAL_PP,浮点值,double,Z_STRVAL,Z_STRVAL_P,Z_STRVAL_PP,字符串值,char*,Z_STRLEN,Z_STRLEN_P,Z_STRLEN_PP,字符串长度值,int,Z_RESVAL,Z_RESVAL_P,Z_RESVAL_PP,资源值,long,Z_ARRVAL,Z_ARRVAL_P,Z_ARRVAL_PP,联合数组,HashTable*,Z_TYPE,Z_TYPE_P,Z_TYPE_PP,Zval,类型,Enumeration(IS_NULL,IS_LONG,IS_DOUBLE,IS_STRING,IS_ARRAY,IS_OBJECT,IS_BOOL,IS_RESOURCE,),Z_OBJPROP,Z_OBJPROP_P,Z_OBJPROP_PP,对象属性,hash,(本章不会谈到),HashTable*,Z_OBJCE,Z_OBJCE_P,Z_OBJCE_PP,对象的类信息(本章不会谈到),zend_class_entry,获取参数,zend_parse_parameters(int num_args TSRMLS_DC,char*type_spec,);,类型指定符,对应的,C,类型,描述,l,long,符号整数,d,double,浮点数,s,char*,int,二进制字符串,长度,b,zend_bool,逻辑型(,1,或,0,),r,zval*,资源(文件指针,数据库连接等),a,zval*,联合数组,o,zval*,任何类型的对象,O,zval*,指定类型的对象。需要提供目标对象的类类型,z,zval*,无任何操作的,zval,返回值,设置返回值并且结束函数,设置返回值,宏返回类型和参数,RETURN_LONG(l),RETVAL_LONG(l),整数,RETURN_BOOL(b),RETVAL_BOOL(b),布尔数,(1,或,0),RETURN_NULL(),RETVAL_NULL(),NULL,RETURN_DOUBLE(d),RETVAL_DOUBLE(d),浮点数,RETURN_STRING(s,dup),RETVAL_STRING(s,dup),字符串。如果,dup,为,1,,引擎会调用,estrdup(),重复,s,,使用拷贝。如果,dup,为,0,,就使用,s,RETURN_STRINGL(s,l,dup),RETVAL_STRINGL(s,l,dup),长度为,l,的字符串值。与上一个宏一样,但因为,s,的长度被指定,所以速度更快。,RETURN_TRUE,RETVAL_TRUE,返回布尔值,true,。注意到这个宏没有括号。,RETURN_FALSE,RETVAL_FALSE,返回布尔值,false,。注意到这个宏没有括号。,RETURN_RESOURCE(r),RETVAL_RESOURCE(r),资源句柄。,自定义,php,函数,?php,$i=3;,echo self_concat(“Hello World,$i);,Eg.1,PHP_FUNCTION(self_concat),char*str=NULL;,int argc=ZEND_NUM_ARGS();,int str_len;,long n;,char*result;,char*ptr;,int result_length;,if(zend_parse_parameters(argc TSRMLS_CC,sl,&str,&str_len,&n)=FAILURE),return;,Eg.2,result_length=(str_len*n);,result=(char*)emalloc(result_length+1);,ptr=result;,while(n-),memcpy(ptr,str,str_len);,ptr+=str_len;,*ptr=/0;,Eg.3,RETURN_STRINGL(result,result_length,0);,谢谢大家,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服