文章分类 - PHP
摘要:开发PHP Module1、首先进入PHP源代码目录中的ext目录,执行如下命令:# ./ext_skel --extname=自定义模块名执行完成后,会生成以“自定义模块名”命名的文件夹,进入这个文件夹后编辑config.m4文件找到如下代码:dnl PHP_ARG_WITH(Test, for Test support,dnl Make sure that the comment is aligned:dnl [--with-Test Include Test support])或者dnl PHP_ARG_ENABLE(Test, whether to enable Test suppor
阅读全文
摘要:1.6访问PHP变量1.6.1 设置1.2.3节提到Zend使用HashTable来存储全局和局部变量符号,因此访问PHP变量,其实就是操作HashTable。当然,我们不需要手工去做,Zend提供了一组宏完成这些工作。PHP变量的创建共有三步,首先需要创建一个zval结构,可使用如下的宏:这个宏先调用emalloc分配一块zval,然后将其refcount设为1、is_ref设为0。之后就是设置zval的值,同样,我们不需要直接操作zval的成员,Zend已经提供了如下的宏:可能你会发现,这个表格和2.3节里面的返回值宏表格很相似,不错,返回值宏就是直接调用的ZVAL_xxx。既然有了zva
阅读全文
摘要:设置数据库设置数据库 我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。 MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。 在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。 CREATE TABLE Images ( PicNum...
阅读全文
摘要:curl是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。详见参考手册- 19 文章- 29 评论- 1原来php默认并不进行此项功能的扩展,但还是有的,只是没有让它生效罢了。打开PHP安装目录,搜索以下三个文件 ssleay32.dll、libeay32.dll和 php_curl.dll,一
阅读全文
摘要:1.1使用数组曾讲到,PHP数组本质上就是个HashTable,因此访问数组就是对HashTable进行操作,Zend为我们提供的一组数组函数也只是对HashTable操作进行了简单包装而已。来看创建数组,由于数组也是存在于zval里的,因此要先用MAKE_STD_ZVAL()宏创建一个zval,之后调用如下宏将其转化为一个空数组:array_init(zval*)接下来是朝数组中添加元素,这对关联数组元素和非关联数组元素要采用不同操作。1.1.1关联数组元素关联数组采用char*作为key,zval*作为value,可以使用如下宏将已有的zval加入数组或者更新已有元素:int add_as
阅读全文
摘要:类和对象(TODO)附录A. Extension的编译Extension的编译是比较简单的,下面是个示例Makefile:01# 扩展搜索目录,模块被放到这里才能被找到和加载02# 可以从php.ini中的extension_dir命令获取该值03PHP_EXT_HOME=/home/wiki/php5/lib/php/extensions/04# PHP源代码路径05PHP_SRC=/home/wiki/wikienv/install/php-5.2.306INCLUDE=-I$(PHP_SRC) -I$(PHP_SRC)/main -I$(PHP_SRC)/TSRM -I$(PHP_SRC
阅读全文
摘要:CGI英文全称是 Common Gateway Interface,通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写, 它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。从上面看,CGI所要实现的不过是动态网页而已,这种处理方式的特点就是每接到一个请求,web server都要fork出一个单独的cgi程序的进程来处理,这种方式的好处是把web server和具体的程序处理独立开来,结构清晰,可控性强,同时缺点就是如果在高访问需求的
阅读全文
摘要:我们这里介绍PHP实现MVC的几种方法,首先将从什么是MVC,然后以代码的形式介绍PHP实现MVC。相信所有习惯了使用MVC来组织自己的项目的人,让他选择一个新的项目构架时,一定不会放弃MVC。传统的面相过程式的开发方式在处理中型以上的应用时,就开始显得力不从心。即便我们能够快速的完成需求,但是在需求发生变更后或者进行后期维护的时候,我们会深深地陷入我们早期搭建的陷阱中。什么是MVC?关于MVC的定义和解释,可以说多种多样。我们可以在Wiki或者[2]中找到更为详尽的解释,这里我并不打算,也没有能力进行深入的讲解,从PHP开发的角度来讲,MVC可以概括为:视图(The View):一说到视图,
阅读全文
摘要:深入了解php底层机制(-) 作为一门动态语言,php是如何实现的,其底层机制如何,具有什么样的特点,本文深入浅出介绍了包括php设计理念、整体结构、核心数据结构和变量在内的相关底层知识,对我们更好的开发php程序,优化性能等有一定的指导意义。TAGPhp 底层机制 性能优化目录1、概述… 1what is php?. 1了解它底层实现的目的?. 12、php的设计理念及特点… 13、Php的四层体系… 24、Sapi 35、Php的执行流程&opcode. 56、HashTable — 核心数据结构… 67、Php变量… 8概述… 8Zval 9整数、浮点数类型变量… 10字符串变量
阅读全文
摘要:1.2.2 底层方法大部分情况下,使用标准方法就可以了,但有些函数可能需要处理变参,标准方法对此无能为力(*)。此时,只有使用更加原始的方法——直接获取zval。Zend提供了如下的API:param_count是希望获取的参数数目,这个值不得大于ZEND_NUM_ARGS(),否则函数出错。argument_array是一个zval**类型的数组,用于接收参数。这个函数只是简单的返回zval,为了使用它们,我们需要自己访问其成员。首先是获取参数类型,这可以通过zval.type值来判断,可用的type见1.1.1节。之后是获取该type对应的值,我们可以直接访问zval的成员,比如zval.
阅读全文
摘要:Extensions 的编写理解了这些运行机制以后,本章着手介绍Extensions 的编写,但凡写程序的人都知道hello world,那好,就从hello world开始。1.1Hello World这是摘自《PHP手册》的示例程序:这段代码实现了一个简单的extension,首先它包含了“php.h”,这是所有extensions都需要包含的头文件,它定义、声明了我们可以访问的所有Zend数据结构、常量和API等。下面对剩余的步骤进行解释。1.1.1 声明导出函数ZEND_FUNCTION宏用于声明一个可在PHP代码中调用的函数,其参数即成为PHP函数名,因此,这一句声明了一个名为fir
阅读全文
摘要:一、 基础知识本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码。1.1 PHP变量的存储1.1.1 zval结构Zend使用zval结构来存储PHP变量的值,该结构如下所示:IS_NULL N/AIS_LONG 对应value.lvalIS_DOUBLE 对应value.dvalIS_STRING 对应value.strIS_ARRAY 对应value.htIS_OBJECT 对应value.objIS_BOOL 对应value.lval.IS_RESOURCE 对应value.lval根据这个表格可以发现两个有意思的地
阅读全文
摘要:怎样使用PhpDocumentor生成文档 命令行方式: 在phpDocumentor所在目录下,输入 phpdoc –h 会得到一个详细的参数表,其中几个重要的参数如下: -f 要进行分析的文件名,多个文件用逗号隔开 -d 要分析的目录,多个目录用逗号分割 -t 生成的文档的存放路径 -o 输出的文档格式,结构为输出格式:转换器名:模板目录。 例如:phpdoc -o HTML:frames:earthli -f test.php -t docs Web界面生成 在新的phpdoc中,除了在命令行下生成文档外,还可以在客户端浏览器上操作生成文档,具体方法是先把PhpDo...
阅读全文
摘要:phpDocumentor新手指南 目录 phpDocumentor是什么?它能做什么? 安装 从Pear.Php.net或Sourceforge.net下载 从PEAR安装 如何为代码写文档才能被phpDocumentor使用 以注释的方式为PHP源代码写文档 为全局变量写文档 页面级的文档块(DocBlock)警告 写外部文档 phpDocumentor新手指南目录 phpDocumentor是什么?它能做什么? 安装 从Pear.Php.net或Sourceforge.net下载 从PEAR安装 如何为代码写文档才能被phpDocumentor使用 以注释的方式为PHP源代码写文档 为全
阅读全文
摘要:本文URL:http://blog.sina.com.cn/s/blog_449a63060100kl34.html搞单元测试的大概步骤是:编写待测试类,编写测试用例类,编写测试类,测试。单元测试首先就是要安装测试的类库了,用pear安装PHPUnit,window下这样操作,首先安装pear,在pear下发现phpunit的频道pear channel-discover pear.phpunit.de,然后安装之pear install phpunit/PHPUnit(使用这条指令,将不会完全安装PHPUnit的所有元素,请使用pear install --alldeps phpunit/P
阅读全文
浙公网安备 33010602011771号