php extend
qq_16490557
这个作者很懒,什么都没留下…
展开
-
C 调用外部方法
zval function_name, *retval, **argv[1], *param; MAKE_STD_ZVAL(retval); MAKE_STD_ZVAL(param); ZVAL_STRING(param, "-1.5", 1); argv[0] = ¶m; ZVAL_STRING(&function_name, "abs", 1); if (call_us原创 2014-07-01 09:19:42 · 497 阅读 · 0 评论 -
在 MS VS 2005中 编译PHP时解决“不能分配常量大小为 0 的数组”错误的临时办法
在 MS Visual Studio 2005 中开发 PHP扩展时可能会遇到“不能分配常量大小为 0 的数组” 的编译错误:======================================1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(44) : error C2466: 不能分配常量大小为 0原创 2014-07-01 09:18:53 · 1456 阅读 · 0 评论 -
VS2010编译PHP出现warning C4005: “_WIN32_WINNT”: 宏重定义
对于warning C4005: “_WIN32_WINNT”: 宏重定义可以去TSRM/readdir.h’文件把#define _WIN32_WINNT 0×0400这一行给注释掉。原创 2014-07-01 09:19:07 · 1190 阅读 · 0 评论 -
在Win32下用VS2008编译PHP扩展
使用VC2008来打开mytest.dsp,它提示要转换工程。 然后将mytest.c改名字为mytest.cpp,将里面的 #include “php.h” #include “php_ini.h” #include “ext/standard/info.h” #include “php_mytest.h” 用extern “C”括起来: extern “C” { #inclu原创 2014-07-01 09:18:56 · 659 阅读 · 0 评论 -
php扩展中的变量和静态变量
网上写了很多静态变量和变量的事情,就是没有说明白,今天我把这两种形式写一下1、类普通变量#define CP_NAME "name"//声明,一般写在MINIT中zend_declare_property_null(cp_code_ce, ZEND_STRL(CP_NAME), ZEND_ACC_PUBLIC TSRMLS_CC);//变量赋值zval * v, * self; ZVAL_STR原创 2014-07-01 09:18:49 · 595 阅读 · 0 评论 -
zval_dtor与zval_ptr_dtor的区别
这两个东西长得很像,起初我还错误以为一个是针对zval一个针对zval*的释放函数,唉,太天真了。这两个函数都与zval的释放有关,是我们肯定会经常碰到的两个函数。下面是两者的声明://zval_dtor是宏函数,最终展开后ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_LINE_DC)//zval_ptr_dtor是宏函数,最终展开原创 2014-07-01 09:19:45 · 1347 阅读 · 0 评论 -
深入理解php原理之include include_once require require_once
先看下总结:require include php引擎是直接调用compile_filename来实现的在compile_filename实现里面会把把resolved_path变量加入included_files数组中 而include_once,require_once 则是先通过zend_resolve_path得到一个解析过的路径(resolved_path)然后通过zend_hash_e原创 2014-07-01 09:19:28 · 632 阅读 · 0 评论 -
扩展修改PHP.INI里面的值
zend_alter_ini_entry("date.timezone", sizeof("date.timezone"), "Asia/Chongqing", sizeof("Asia/Chongqing") - 1, PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);原创 2014-07-01 09:19:17 · 394 阅读 · 0 评论 -
将VS2010里的红色波浪线去掉
不关VS的事,原因在于visual assist。在VAssistX菜单栏->Visual Assist X Options->展开Advanced->Underlines->把underlines spelling errors in comments and strings using的勾去掉就行原创 2014-07-01 09:19:05 · 419 阅读 · 0 评论 -
使用var_dump打印数组
php_var_dump(lib_val, 1 TSRMLS_CC);原创 2014-07-01 09:19:40 · 679 阅读 · 0 评论 -
实现include和include_once
zend_file_handle file_handle; zend_op_array *new_op_array; uint dummy = 1; if(php_stream_open_for_zend_ex(path, &file_handle, ENFORCE_SAFE_MODE|IGNORE_URL_WIN|STREAM_OPEN_FOR_INCLUDE TSRMLS_CC) != SUC原创 2014-07-01 09:19:26 · 455 阅读 · 0 评论 -
全局变量的调用
zval **carrier, ** ret;carrier = &PG(http_globals)[TRACK_VARS_SERVER]; if(zend_hash_find(Z_ARRVAL_PP(carrier), "PHP_SELF", strlen("PHP_SELF")+1, (void **)&ret) == FAILURE) { php_printf("PHP_SELF NO");原创 2014-07-01 09:19:14 · 362 阅读 · 0 评论 -
vs2010,编译PHP,_executor_globals_id的问题
_executor_globals_id问题是由于php生成脚本出现的问题。将预编译中的LIBZEND_EXPORTS去掉,即可解决该问题!原创 2014-07-01 09:19:12 · 518 阅读 · 0 评论 -
在PHP扩展中包装C++类
很久之前,当我遇到这片文章的时候我就将其收藏了,这段时间停了下剑三,而且今天北京下雪,所以想将它翻译一下。不过本人因为换USB无线网卡的原因,Linux系统已经完全格掉了,现在是个纯粹的Windows流。Now,下面给出在Windows下的实践方法。注,请不要将原文的源代码与本文的源代码混用,在有些地方可能不尽相同阅读本文不需要参照原文,不需要使用原文中的前置步骤(其讲述的是在Linux下的构建步原创 2014-07-01 09:18:51 · 483 阅读 · 0 评论 -
VS2010 从“const time_t *”到“const __time32_t *”的类型不兼容
直接到main/config.w32.h注释到这句#define _USE_32BIT_TIME_T 1原创 2014-07-01 09:19:10 · 981 阅读 · 1 评论