在行主页

所有“在行”下的交流分享内容

  • 10/9/5(日) 00:02
    默认fedora的播放器是不支持mp3格式的音乐的,原因是版权问题,mp3音乐格式不是开源的,任何能播放mp3的播放器都需要向mp3的所有者支持费用,所以fedora上的开源播放器都不支持它。 但办法还是有的 可以安装XMMS播放器,然后再安装一个XMMS插件就可以: 安装XMMS:# yum install xmms 这个很方便,在fedora的更新源里就有,直接yum install就可以...
     
  • 10/8/20(五) 19:05
    javascript中的函数对象(Function object)有一个call方法,该方法的参数是一个javascript对象,有别于函数对象,对一个函数对象 A 调用call方法,那么该函数对象 A 内的this关键字引用的便是call方法中的参数,也就是函数对象 A 在call方法的参数所指定的对象的上下文中执行,函数对象等同于参数所指定的对象中的一个方法 var result = fun...
     
  • 10/8/9(一) 15:06
    取一个日期属于第几周的问题 考虑下面这个日历: 2010年1月1日是第几周呢?查看各种2010年日历,上面标识的肯定是第一周,但1月1日是星期五,那么这第一周只有两天。 这是我的理解 那么php有几个API取得给定的日期是第几周: string date ( "W" [, int $timestamp ] ) ISO-8601 week number of year, wee...
     
  • 10/8/4(三) 13:57
    一个php扩展主要包含两个文件:.h的头文件和.c的代码文件,文件名都为扩展名。头文件的基本结构如下: #ifndef 扩展名大写_H #define 扩展名大写_H extern zend_module_entry 扩展名小写_module_entry; #define phpext_phpmore_ptr &扩展名小写_module_entry /* 声明扩展提供的函数的原型 */ ...
     
  • 10/8/4(三) 13:55
    我们可以使用php编写OOP的代码,但这是在php语言层面上的,它们最终会被zend引擎处理为zend中的OOP实现。 我们也可以直接在zend中编写PHP的OOP代码,如像PDO等,然后在php中直接使用 这部分内容为学习zend中的对象机制。学习PHP中的对象在zend引擎中是如何处理和表示的 要在zend中编写PHP的oop代码,面临如下问题 怎么定义类 怎么定义接口 怎么定义类/...
     
  • 10/8/4(三) 13:54
    本文给出一个使用VS2005构建Zend扩展开发环境的方法,并不能编译整个PHP 准备工作 下载编译好的PHP 下载PHP源代码 下载cygwin vs2005 使用php提供的ext_skel_win32.php工具生成扩展代码结构 首先安装cygwin 到php src的ext目录,修改ext_skel_win32.php,把其中的$cygwin_path修改为你的cygwin安装路径 在命...
     
  • 10/8/4(三) 13:52
    附件是三份介绍zend扩展的英文文档,介绍了如下内容: How PHP handles data How to create your own extension skeleton How to create your own functions How to work with arrays and has tables The PHP Lifecycle Memory Allocatio...
     
  • 10/8/4(三) 13:50
    在《Zend Engine学习之数据结构类型》中说到,Zend的数据类型为zval,它封装了PHP中的所有数据类型 在《Zend Engine学习之对参数的处理》提到了处理PHP的参数的两个API, 这里就学习一下当把参数解析成各种数据类型后,我们怎么使用这些数据类型 long,double 这两种类型跟c一样,这里就略掉 boolean 这是zend_bool,声明在zend_types.h文...
     
  • 10/8/4(三) 13:49
    在zend中函数返回可以直接使用return;这时函数的返回值为null。 PHP_FUNCTION(test){ return; } 输出: null; 也可以使用如下的宏(zend_API.h),这些宏设置函数的返回值,但不退出函数: #define RETVAL_RESOURCE(l) ZVAL_RESOURCE(return_val...
     
  • 10/8/4(三) 13:47
    这里学习一下ZEND对参数的处理,指的是Zend核心在执行PHP语言时对方法参数的处理 API: 声明在zend_API.h文件中,定义在zend_API.c文件中: ZEND_API int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...); num_args:参数个数,可使用宏ZEND_NUM_ARGS()...
     
  • 10/8/4(三) 12:48
    在PHP源码中一切数据类型都是zval,它的结构如下图: zval: 定义在文件zend.h中 struct _zval_struct { zvalue_value value; zend_uint refcount; zend_uchar type;/*值类型IS_**/ zend_uchar is_ref; }; 数据类型: 可以用Z_TYPE_PP或者Z_TYPE_P来查看...
     
  • 10/8/4(三) 12:47
    zend中的zval结构体(Zend 数据结构类型)封装了php所能表示的所有变量类型,当把各种php的变量类型转换成zval后,我们可以按照该结构体访问变量,但这样很繁琐:我们要知道它是什么类型,然后再到相关的存储结构体或联合体中中取值,zend为我们提供了一些宏,可以方便我们处理这些事情,这些宏如下: Z_LVAL(zval) Long 取得long值 Z_DVAL(zval) dou...
     
  • 10/8/4(三) 12:45
    启动(STARTUP) 初始化php的处理空间,在php启动时执行 初始化引擎和核心组件 解析php.ini (MINIT)初始化静态构建的模块(编译时编译进php的) (MINIT)初始化共享模块。在php.ini由extension指定的模块 完成初始化 这个阶段可能做的事情: 为全局变量分配存储和初始化 例子: PHP_MINIT_FUNCTION(扩展名小写) { ZEND_...
     
  • 10/8/4(三) 12:44
    对于全局变量的使用,需要考虑到线程安全,zend的ZTS为我们考虑了这些问题,我们只需要使用它提供的结构体和宏即可 如果不使用zend提供的结构体,所存储的全局变量就不是线程安全的,SAPI的线程对它的访问会冲突 例如: static char *errormsg= NULL; PHP_FUNCTION(unthreadsafe) { long ret; ret = do_somethi...
     
  • 10/8/4(三) 12:43
    ZE在整理之前先统一名词:PHP扩展,PHP模块,Zend扩展,Zend模块都表示编译后的ext目录中的相关dll(或so)文件,所以都统一称为Zend模块。 该学习是在php5以后的版本上进行的 由于c是区分在小写的,所以在代码中的大小写要注意一下,特别是扩展名,在需要大写的地方使用YOUREXT,需要小写的地方使用yourext 该文章主要整理一下Zend模块的组成(确切的说是Zend的扩展...
     
 


趣友。。。