通用函数

  1.通用数据库处理函数

  和其它的CGI函数相比,PHP的优点之一是具有很强大的数据库处理能力。但是,在PHP中,对于不同的数据库都使用一些特定的函数来专门处理,缺少通用的数据库处理函数。这大大降低了程序代码的可移植性,这也为初学编程的朋友带来了很多不便。

  在网上,许多程序员都通过封装类解决了这个问题。他们编写了统一的函数用来处理任何流行的数据库——不管是在Linux世界深受欢迎的Mysql还是在Windows平台上广泛流行的SqlServer。

  就济南网站建设来说,非常喜欢使用这些函数,因为可以直接使用一些简单的诸如”query”、”next_record”之类的函数,而不需要考虑数据库的连接、数据库句柄这些复杂的东西,更不需要考虑使用的是何种数据库。

  2.变量调试函数

  PHP程序的调试一直是一件让人头疼的事,它既不像VB等高级语言那样有集成的编译调试环境,也不想Perl那样可以在Linux或者DOS环境下直接运行。其实,我们完全可以通过灵活地使用echo语句来完成对PHP的调试工作。下面的几个函数可以让你随时查看程序中任何变量的类型及其值。

  1.function ss_array_as_string (&$array, $column = 0) {

  2. $str = "Array(n";

  3.while(list($var, $val) = each($array)){

  4. for ($i = 0; $i < $column+1; $i++){

  5.$str .= "    ";

  6. }

  7. $str .= $var. ==> ;

  8. $str .= ss_as_string($val, $column+1)." n";

  9.}

  10.for ($i = 0; $i < $column; $i++){

  11. $str .= "    ";

  12.}

  13.return $str.);

  14. }

  15. function ss_object_as_string (&$object, $column = 0) {

  16.if (emptyempty($object->classname)) {

  17. return "$object";

  18.}

  19.else {

  20. $str = $object->classname."( n";

  21.while (list(,$var) = each($object->persistent_slots)) {

  22. for ($i = 0; $i < $column; $i++){

  23.$str .= "    ";

  24. }

  25. global $$var;

  26. $str .= $var. ==> ;

  27. $str .= ss_as_string($$var, column+1)." n";

  28.}

  29.for ($i = 0; $i < $column; $i++){

  30. $str .= "    ";

  31.}

  32.return $str.);

  33.}

  34. }

  35. function ss_as_string (&$thing, $column = 0) {

  36. if (is_object($thing)) {

  37.return ss_object_as_string($thing, $column);

  38. }

  39. elseif (is_array($thing)) {

  40.return ss_array_as_string($thing, $column);

  41. }

  42. elseif (is_double($thing)) {

  43.return "Double(".$thing.")";

  44. }

  45. elseif (is_long($thing)) {

  46.return "Long(".$thing.")";

  47. }

  48. elseif (is_string($thing)) {

  49.return "String(".$thing.")";

  50. }

  51. else {

  52.return "Unknown(".$thing.")";

  53. }

  54. }

  需要的时候,在程序中简单地加入下面的一条代码即可查看程序中的所使用的变量(包括数组和对象)的类型和值:

  echo ss_as_string($my_variable);

  使用下面的语句,我们可以直接查看程序中所有的变量的值:

  echo ss_as_string($GLOBALS);

  3. 控制Log信息的函数

  调试PHP程序的另外一种重要的方法就是查看Log信息。如果能够方便地控制Log信息的级别以及Log信息的显示内容,将会给程序调试带来更多的便利。下面的几个函数可以方便地实现这个功能。

  1.$ss_log_level = 0;

  2.$ss_log_filename = /tmp/ss-log;

  3.$ss_log_levels = array(

  4. NONE => 0,

  5. ERROR => 1,

  6. INFO => 2,

  7. DEBUG => 3);

  8.function ss_log_set_level ($level = ERROR) {

  9. global $ss_log_level;

  10. $ss_log_level = $level;

  11.}

  12.function ss_log ($level, $message) {

  13. global $ss_log_level, $ss-log-filename;

  14. if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {

  15.// 不显示Log信息

  16.return false;

  17. }

  18. $fd = fopen($ss_log_filename, "a+");

  19. fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");

  20. fclose($fd);

  21. return true;

  22.}

  23.function ss_log_reset () {

  24. global $ss_log_filename;

  25. @unlink($ss_log_filename);

  26.}

  在上面的函数中,有四个Log级别变量。运行PHP程序时,只有当Log的级别低于预设的级别值时,Log信息才可以被记录和显示出来。例如,在程序中加入如下的一条语句:

  ss_log_set_level(INFO);

  那么,运行PHP程序时,只有ERROR和INFO级别的LOG信息才能被记录和显示出来,DEBUG级的信息则被忽略了。除此之外,我们还可以设定显示的信息内容,其语句如下:

  ss_log(ERROR, "testing level ERROR");

  ss_log(INFO, "testing level INFO");

  ss_log(DEBUG, "testing level DEBUG");

  你也可以随时使用下面的语句清空LOG信息:

  4.速度测试函数

  为了优化代码,我们需要一种可以测试代码运行时间的方法,从而来选择最优的代码。下面的函数可以测试运行代码所需的时间:

  1.function ss_timing_start ($name = default) {

  2. global $ss_timing_start_times;

  3. $ss_timing_start_times[$name] = explode( , microtime());

  4.}

  5.function ss_timing_stop ($name = default) {

  6. global $ss_timing_stop_times;

  7. $ss_timing_stop_times[$name] = explode(, microtime());

  8.}

  9.function ss_timing_current ($name = default) {

  10. global $ss_timing_start_times, $ss_timing_stop_times;

  11. if (!isset($ss_timing_start_times[$name])) {

  12.return 0;

  13. }

  14. if (!isset($ss_timing_stop_times[$name])) {

  15.$stop_time = explode(, microtime());

  16. }

  17. else {

  18.$stop_time = $ss_timing_stop_times[$name];

  19. }

  20. $current = $stop_time[1] - $ss_timing_start_times[$name][1];

  21. $current += $stop_time[0] - $ss_timing_start_times[$name][0];

  22. return $current;

  23.}

  现在可以轻松地检查任何一段代码的执行时间了,甚至我们可以同时使用多个计时器,只需在使用上述的几个函数时设定不同的参数作为计时器的名称就可以了。

  5.调试和优化数据库的操作

  对于数据库来说,运行速度是至关重要的。尽管很多书籍和文章都讲授了一些快速运行数据库的方法,但是所有的方法都必须经过实践的检验。下面我们将把PHPLib函数库中的query()函数和上面介绍的几个函数综合起来编写成新的query()函数,和原先的函数相比,这个函数增加了运行时间的监测功能。

  1.function query($Query_String, $halt_on_error = 1) {

  2. $this->connect();

  3. ss_timing_start();

  4. $this->Query_ID = @mysql_query($Query_String,$this->Link_ID);

  5. ss_timing_stop();

  6. ss_log(INFO, ss_timing_current(). Secs - .$Query_String);

  7. $this->Row = 0;

  8. $this->Errno = mysql_errno();

  9. $this->Error = mysql_error();

  10. if ($halt_on_error && !$this->Query_ID) {

  11.$this->halt("Invalid SQL: ".$Query_String);

  12. }

  13. return $this->Query_ID;

 

  14.}

时间: 2024-08-07 06:58:17

通用函数的相关文章

在Adaptive Server Anywhere和Oracle之间构造通用函数

oracle|server|函数 在Adaptive Server Anywhere和Oracle之间构造通用函数辽河油田锦采地质大队 邓先永 01-7-2 上午 10:29:41 在使用PowerBuilder编制程序时,使用的最多的数据库接口是它自身集成的Adaptive Server Anywhere和大型数据库管理系统Oracle:有时,为了使程序的运行.移植更加方便,比如从服务器的数据管理端立即转到单机的数据管理端时,往往涉及到用户在程序的SQL语句中所使用的不同数据库平台上,函数的兼

PHP:汉字转为unicode的通用函数

把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件:本文件以及函数的输入参数应该用utf-8编码,不然要加函数转换. <?/** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码,不然要加函数转换 * 其实亦可轻易编写反向转换的函数,甚至不局限于汉字,奇怪为什么php没有现成函数 * @author xieye * * @param {string} $word 必须是一个汉

广告代码静态化js通用函数_javascript技巧

/* JavaScript Document 广告代码静态化js通用函数 原则上每个页面不应该出现域名的固定指向 */ /* Config */ var sSiteUrl = "http://www.spvjoy.com"; //var sSiteUrl = "http://192.168.1.30:82"; var sSendSite = "http://send.mmstoon.com"; var sMp3Url = "http:/

求一个c#通用函数,将传入的一个长字符串按规定的长度分几行等长输出

问题描述 求一个c#通用函数,将传入的一个长字符串按规定的长度分几行等长输出 求一个c#通用函数,将传入的一个长字符串按规定的长度分几行等长输出,若遇到百分比范围(如40%~50%)不能拆开,要放在同一行. 数字占一位,汉字是占两位 例如: 若传入这样一个字符串: 今后,江苏联络处在公安部的授权范围内开展工作,接受国际刑警组织中国国家中心局的业务指导,负责20%~30%国际刑警组织框架内的联络工作,统筹全省公安机关22.543%~60%涉外刑事案件的协调组织. 输出: 今后,江苏联络处在公安部的

Python获取Windows或Linux主机名称通用函数分享_python

通过python的os模块获取windows或者linux主机名的通用函数. 复制代码 代码如下: #!/usr/bin/env python  #coding=utf-8    import os    def hostname():          sys = os.name            if sys == 'nt':                  hostname = os.getenv('computername')                  return hos

javascript实现的多个层切换效果通用函数实例_javascript技巧

本文实例讲述了javascript实现的多个层切换效果通用函数.分享给大家供大家参考.具体实现方法如下: function ChangeDiv(tagId,tagName,divId,divName,zDivCount,tagclass,divclass) { for(i=0;i<=zDivCount;i++) { document.getElementById(divName+i).style.display="none"; document.getElementById(di

Ajax:显示url网页内容的通用函数

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>Ajax</TITLE><SCRIPT LANGUAGE="JavaScript"><!--/*** 显示url网页内容的通用函数* Program: 54powerman* EMail: 54powerman@163.com*

oracle中的NVL,NVL2,NULLIF,COALESCE几个通用函数

Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简单介绍一下几个函数的用法. 在介绍这个之前你必须明白什么是oracle中的空值null 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 例如: SQL> sel

[推荐]ASP编程通用函数收藏大全第1/2页

本帖将收集和征集最全面的ASP编程应用中通用功能函数,人人为我,我为人人:) 只要大家每人献出一两条自己收藏已久,精典的通用函数,我想本帖将会对许许多多的ASP编程爱好者.工作者有很大的帮助,也将成为大家ASP编程的必备函数集. 赶快检查您自己的函数库吧,看一下你有的我们这里都有了吗? 如果你发现了你的函数库里还有着那么一两条鲜为人知的函数,那快点以下面格式跟帖回复吧. 发表通用函数帖子格式:复制代码 代码如下:<% '****************************** '函数:Fun

PHP把汉字转为unicode的通用函数

把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件:本文件以及函数的输入参数应该用utf-8编码,不然要加函数转换. <? /** * 把一个汉字转为unicode的通用函数,不依赖任何库,和别的自定义函数,但有条件 * 条件:本文件以及函数的输入参数应该用utf-8编码,不然要加函数转换 * 其实亦可轻易编写反向转换的函数,甚至不局限于汉字,奇怪为什么php没有现成函数 * @author xieye * * @param {string} $word 必须是一个