欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

《PHP核心技术与最佳实践》错误和输出API

程序员文章站 2022-04-25 20:13:12
...
PHP内核中不能简单地使用printf()函数打印数据,因为PHP有自己一套管理输出流的函数,如果调用printf()函数打印数据,很有可能出现意想不到的结果。下面了解PHP的输出API。

1) php_printf()函数:php_printf()跟C语言标准库的printf()函数很相似,唯一不同的就是php_printf()函数指向的是Zend的输出流,其原型如下:PHPAPI int php_printf(const char *format,...);第一个参数指定输出字符串的格式,格式参数跟printf()函数一样,例如:

php_printf("This is number:%d\n",10);

2) zend_error()函数:zend_error()函数用于输出一个错误信息,原型如下:ZEND_API void zend_error(int type,const *format,...);第一个参数指定错误信息的类型,第二个参数指定错误提醒消息。下面列出所有的错误信息类型:

E_ERROR:抛出一个错误,然后立即中止脚本的执行;

E_WARNING:抛出一个一般性的警告,脚本会继续执行;

E_NOTICE:抛出一个通知,脚本会继续执行,注意默认情况下php.ini会关闭显示这种错误;

E_CORE_ERROR:抛出一个PHP内核错误,通常情况下这种错误类型不应该被用户自己编写的模块引用;

E_COMPILE_ERROR:抛出一个编译器内部错误,通常情况下这种错误不应该被用户自己编写的模块引用;

E_COMPILE_WARNING:抛出一个编译器内部警告,同上也不应该被用户自己编写的模块引用;

一示例代码如下:zend_error(E_WARNING,"This is warning message.");

3) 向phpinfo()中输出信息:一般完成一个扩展之后,希望使用者了解到这个扩展的一些信息,最直接的方法就是用phpinfo()函数打印,这里就需要实现ZEND_MINFO()函数,,当调用phpinfo()函数时,ZEND_MINFO()函数会自动被调用。

如果指定ZEND_MINFO()函数,phpinfo()会自动打印一小节,小节的头部就是模块名,如果还想显示更多的信息就要自己指定。

PHP内核提供的以表格格式显示信息的接口一般需要三个步骤:

1)调用php_info_print_table_start函数制定表格(该函数没有参数)

2)调用php_info_print_table_handler和php_info_print_table_row这两个函数打印表格具体的行列信息

2)调用php_info_print_table_end函数来结束(该函数没有参数)

php_info_print_table_header()需要的参数会根据需要而变化:

void php_info_print_table(int cols,"header str of col1",...,"header str of coln");

void php_info_print_table_row(int cols,"str content of col1",...,"str content of coln");

这两个函数不同的地方就是它们打印的颜色不一样。