时代在发展,编程的方式方法也在变化,这里列出一些语言的编程问题,简单而实用。
Recently in 我和PHP Category
突然发现安装php之后,$_POST变量出现了问题,获取不到,开始以为是PHP某个版本的bug,后面分析发现是mod_security的问题,简单来说卸载即可。
PHP 7 将在2015年10月发布,PHP 7 将更快!PHP 7 基于 PHPNG 项目(PHP Next-Gen),它能让 Zend 加速 PHP 应用,使 PHP 7 性能有巨大提升!
PHP 开发团队今天发布两个更新版本,分别是 5.4.8 和 5.3.18,,这两个版本修复了超过 20 个 bug,所有的 PHP 用户建议立即升级到 5.4.8,或者至少也要升级到 5.3.18.
两个关键的问题修复:
- Fixed bug #63111 (is_callable() lies for abstract static method)
- Fixed bug #61442 (exception threw in __autoload can not be catched
源码下载:downloads page
Windows 二进制版下载 windows.php.net/download/.
完整 bug 修复记录:ChangeLog.
RPM spec文件下载:php.spec
PHP 4.4.9是PHP 4.x的最后一个版本。管理员和开发者失去了最后一个不升级到新一代版本开发环境的理由。过去几年,PHP 5提供了多种升级的途径,它的最新版本是5.2.6。但PHP 4发布8年之后,仍然有相当多的系统将不会在未来迁移到PHP 5,其中有相当的一部分可能永远也不会升级到PHP 5。对于那些不升级到新版PHP的用户,PHP专家 Stefan Esser将通过Suhosin 项目继续为PHP 4.x系列提供第三方安全补丁。
配置文件的宏
由 buildconf 处理的配置文件 config.m4 包含了所有在配置过程中所执行的指令。这些指令诸如包含测试包含所需的外部文件,像头文件、库文件等等。PHP 定义了一系列处理这类情况的宏,其中最常用的已经在下表中列了出来。。
宏 | 说明 |
---|---|
AC_MSG_CHECKING(message) | 在执行 configure 命令时输出“checking <message>”等信息。 |
AC_MSG_RESULT(value) | 取得 AC_MSG_CHECKING 的执行结果,一般情况下 value 应为 yes 或 no。 |
AC_MSG_ERROR(message) | 在执行 configure 命令时输出一条错误消息 message 并中止脚本的执行。 |
AC_DEFINE(name,value,description) | 向 php_config.h 添加一行定义:
#define name value // description (这对模块的条件编译很有用。) |
AC_ADD_INCLUDE(path) | 添加一条编译器的包含路径,比如用于模块需要为头文件添加搜索路径。 |
AC_ADD_LIBRARY_WITH_PATH (libraryname,librarypath) | 指定一个库的连接路径。 |
AC_ARG_WITH(modulename,description, unconditionaltest,conditionaltest) | 这是一款比较强大的宏,用于将模块的描述 description 添加到“configure -help”命令的输出里面。PHP 会检查当前执行的 configure 脚本里面有没有-with-<modulename> 这个选项。 如果有则执行 unconditionaltest 语句(比如 -with-myext=yes 等), 此时,选项的值会被包含在 $withval 变量里面。否则就执行 conditionaltest 语句。 |
PHP_EXTENSION(modulename, [shared]) | 这个是配置你的扩展时 PHP 必定调用的一个宏。你可以在模块名后面提供第二个参数,用来表明是否将其编译为动态共享模块。这会导致在编译时为你的源码提供一个 COMPILE_DL_<modulename> 的定义。 |
Zend API中的宏
下面是一些引入到 Zend API 里面用于访问 zval 容器的 API 宏。
宏 | 指向 |
---|---|
Z_LVAL(zval) | (zval).value.lval |
Z_DVAL(zval) | (zval).value.dval |
Z_STRVAL(zval) | (zval).value.str.val |
Z_STRLEN(zval) | (zval).value.str.len |
Z_ARRVAL(zval) | (zval).value.ht |
Z_LVAL_P(zval) | (*zval).value.lval |
Z_DVAL_P(zval) | (*zval).value.dval |
Z_STRVAL_P(zval_p) | (*zval).value.str.val |
Z_STRLEN_P(zval_p) | (*zval).value.str.len |
Z_ARRVAL_P(zval_p) | (*zval).value.ht |
Z_LVAL_PP(zval_pp) | (**zval).value.lval |
Z_DVAL_PP(zval_pp) | (**zval).value.dval |
Z_STRVAL_PP(zval_pp) | (**zval).value.str.val |
Z_STRLEN_PP(zval_pp) | (**zval).value.str.len |
Z_ARRVAL_PP(zval_pp) | (**zval).value.ht |
原文:http://www.yanbin.org/php-manual-zh-api-macros/
这里主要讲述在PHP及Zend框架下怎么使用Zend API和C++语言来实现自己所要的功能以及项目的开发。
此篇文章所运用的环境在Linux 2.4.21-4.ELsmp(Red Hat Linux
3.2.3-20),Apache/2.2.8,gcc version 3.2.3 20030502,PHP 5.2.5 (cli),Zend
Engine v2.2.0下进行。