PHP扩展开发-分享会

上传人:hy****d 文档编号:243016412 上传时间:2024-09-13 格式:PPTX 页数:17 大小:93.26KB
返回 下载 相关 举报
PHP扩展开发-分享会_第1页
第1页 / 共17页
PHP扩展开发-分享会_第2页
第2页 / 共17页
PHP扩展开发-分享会_第3页
第3页 / 共17页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2015/4/13,#,PHP,扩展开发,更多内容,请见,2015-04-14,下午分享会,1,NTS or TS,None Thread Safe(,非线程安全,),Thread Safe(,线程安全,),2,开发环境,Windows OR Linux,X86 OR X64,3,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,源码,4,Windows,开发流程,Buildconf,configure,ext_skel_win32.php,参数,-extname,扩展名称,-proto,定义文件,编译,5,Linux,开发流程,ext_skel,-extname,扩展名称,-proto,定义文件,config.m4,PHP_ARG_WITH(example, for example support, -with-example=FILE Include example support. 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),6,Linux,开发流程,Phpize,configure,-with-php-config=/usr/local/php/bin/php-config,Make,Make install,7,函数声明宏,语义,PHP_MINIT_FUNCTION(),当,PHP,被装载时,模块启动函数即被引擎调用。这使得引擎做一些例如资源类型,注册,INI,变量等的一次初始化。,PHP_MSHUTDOWN_FUNCTION(),当,PHP,完全关闭时,模块关闭函数即被引擎调用。通常用于注销,INI,条目,PHP_RINIT_FUNCTION(),在每次,PHP,请求开始,请求前启动函数被调用。通常用于管理请求前逻辑。,PHP_RSHUTDOWN_FUNCTION(),在每次,PHP,请求结束后,请求前关闭函数被调用。经常应用在清理请求前启动函数的逻辑。,PHP_MINFO_FUNCTION(),调用,phpinfo(),时模块信息函数被呼叫,从而打印出模块信息。,8,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;,9,宏,访问对象,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,10,获取参数,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,11,返回值,设置返回值并且结束函数,设置返回值,宏返回类型和参数,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),资源句柄。,12,自定义,php,函数,?php,$i=3;,echo self_concat(“Hello World, $i);,13,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;,14,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;,15,Eg.3,RETURN_STRINGL(result, result_length, 0);,16,谢谢大家,17,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!