资源描述:
《PHP扩展开发-分享会.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PHP扩展开发更多内容请见2015-04-14下午分享会NTSorTSNoneThreadSafe(非线程安全)ThreadSafe(线程安全)开发环境WindowsORLinuxX86ORX64Windows环境VC6(MicrosoftVisualC++6.0)VC9(MicrosoftVisualStudio2008)VC11(MicrosoftVisualStudio2012)Cygwin64ORCygwin_X86Php-depsphp-sdk-binary-toolsPhp源码Windows开发流程Buildconfconfigure
2、ext_skel_win32.php参数--extname扩展名称--proto定义文件编译Linux开发流程ext_skel--extname扩展名称--proto定义文件config.m4PHP_ARG_WITH(example,forexamplesupport,[--with-example[=FILE]Includeexamplesupport.Fileistheoptionalpathtoexample-config])PHP_ARG_WITH(example-extra,forextralibrariesforexample,[--
3、with-example-extra=DIRexample:Locationofextralibrariesforexample],no,no)Linux开发流程Phpizeconfigure--with-php-config=/usr/local/php/bin/php-configMakeMakeinstall函数声明宏语义PHP_MINIT_FUNCTION()当PHP被装载时,模块启动函数即被引擎调用。这使得引擎做一些例如资源类型,注册INI变量等的一次初始化。PHP_MSHUTDOWN_FUNCTION()当PHP完全关闭时,模块关闭函
4、数即被引擎调用。通常用于注销INI条目PHP_RINIT_FUNCTION()在每次PHP请求开始,请求前启动函数被调用。通常用于管理请求前逻辑。PHP_RSHUTDOWN_FUNCTION()在每次PHP请求结束后,请求前关闭函数被调用。经常应用在清理请求前启动函数的逻辑。PHP_MINFO_FUNCTION()调用phpinfo()时模块信息函数被呼叫,从而打印出模块信息。PHP的变量typedefstruct_zval_struct{zvalue_valuevalue;zend_uintrefcount;zend_uchartype;zen
5、d_ucharis_ref;}zval;typedefunion_zvalue_value{longlval;doubledval;struct{char*val;intlen;}str;HashTable*ht;zend_object_valueobj;}zvalue_value;typedefstruct_zval_structzval;宏访问对象C类型Z_LVAL,Z_LVAL_P,Z_LVAL_PP整型值longZ_BVAL,Z_BVAL_P,Z_BVAL_PP布尔值zend_boolZ_DVAL,Z_DVAL_P,Z_DVAL_PP浮点
6、值doubleZ_STRVAL,Z_STRVAL_P,Z_STRVAL_PP字符串值char*Z_STRLEN,Z_STRLEN_P,Z_STRLEN_PP字符串长度值intZ_RESVAL,Z_RESVAL_P,Z_RESVAL_PP资源值longZ_ARRVAL,Z_ARRVAL_P,Z_ARRVAL_PP联合数组HashTable*Z_TYPE,Z_TYPE_P,Z_TYPE_PPZval类型Enumeration(IS_NULL,IS_LONG,IS_DOUBLE,IS_STRING,IS_ARRAY,IS_OBJECT,IS_BOOL,
7、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(intnum_argsTSRMLS_DC,char*type_spec, …);类型指定符对应的C类型描述llong符号整数ddouble浮点数schar*,int二进制字符串,长度bzend_bool逻辑型(1或0)rzval*资源(文件
8、指针,数据库连接等)azval*联合数组ozval*任何类型的对象Ozval*指定类型的对象。需要提供目标对象的类类型zzval*无任何