>  기사  >  백엔드 개발  >  《PHP核心技术与最佳实践》错误和输出API

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

WBOY
WBOY원래의
2016-06-20 12:35:241120검색

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");

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.