Rumah >pembangunan bahagian belakang >tutorial php >《PHP核心技术与最佳实践》错误和输出API
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");
这两个函数不同的地方就是它们打印的颜色不一样。