该文件是一些通用的函数,可以在任意地方使用它们。共有59个函数,函数的参数和返回类型见文章下半部分。
GetScheme($array)
GetWebServer()
GetSystem()
GetPHPEngine()
GetPHPVersion()
AutoloadClass($classname)
Logs($s, $iserror = false)
RunTime()
GetEnvironment()
plugin_dir_url($file)
plugin_dir_path($file)
GetValueInArray($array, $name)
GetValueInArrayByCurrent($array, $name)
GetGuid()
GetVars($name, $type = 'REQUEST')
GetVarsByDefault($name, $type = 'REQUEST', $default = null)
GetDbName()
GetCurrentHost($blogpath, &$cookiespath)
GetHttpContent($url)
GetDirsInDir($dir)
GetFilesInDir($dir, $type)
SetHttpStatusCode($number)
Redirect($url)
Redirect301($url)
Http404()
Http500()
Http503()
Http304($filename, $time)
GetGuestIP()
GetGuestAgent()
GetRequestUri()
GetFileExt($f)
GetFilePermsOct($f)
GetFilePerms($f)
AddNameInString($s, $name)
DelNameInString($s, $name)
HasNameInString($s, $name)
JsonError4ShowErrorHook($errorCode, $errorString, $file, $line)
JsonError($errorCode, $errorString, $data)
JsonReturn($data)
RespondError($errorCode, $errorString)
ScriptError($faultString)
CheckRegExp($source, $para)
TransferHTML($source, $para)
CloseTags($html)
SubStrUTF8_Start($sourcestr, $start, $cutlength)
SubStrUTF8($sourcestr, $cutlength)
SubStrUTF8_Html($sourcestr, $cutlength)
RemoveBOM($s)
GetTimeZonebyGMT($z)
htmlspecialchars_array($array)
FilterCorrectName($s)
CheckCanBeString($obj)
utf84mb_filter(&$sql)
utf84mb_fixHtmlSpecialChars()
utf84mb_convertToUCS4($matches)
utf84mb_convertToUTF8($matches)
VerifyWebToken($wt,$wt_id)
CreateWebToken($wt_id,$time)
GetScheme($array) 得到请求的方法,未必准确,比如SERVER没有某项,或是端口改过的。参数是数组,返回 https:// 或者 http:// 字符串。系统使用示例:define('HTTP_SCHEME', GetScheme($_SERVER));
GetWebServer()获取服务器。返回使用的是什么服务器,比如Apache、Nginx什么的。系统使用示例:define('PHP_SERVER', GetWebServer());
GetSystem()获取操作系统,返回使用的是什么操作系统。系统使用示例:define('PHP_SYSTEM', GetSystem());
GetPHPEngine()获得PHP解析引擎,返回 HHVM 或者 PHP 对应的常量。系统使用示例:define('PHP_SYSTEM', GetSystem());
GetPHPVersion()获取PHP版本,返回字符串。系统使用示例:$system_environment = PHP_OS . '; ' .
GetValueInArray(
explode(' ', str_replace(array('Microsoft-', '/'), array('', ''), GetVars('SERVER_SOFTWARE', 'SERVER'))), 0
) . '; ' .
'PHP ' . GetPHPVersion() . (IS_X64 ? ' x64' : '') . '; ' .
$zbp->option['ZC_DATABASE_TYPE'] . '; ' . $ajax;
AutoloadClass($classname)自动加载类文件,参数为类名。改函数自动加载位于zb_system/function/lib/文件夹下和类名同名的php文件。系统使用示例:AutoloadClass('ZBlogPHP');
Logs($s, $iserror = false)记录日志,参数1是需要记录的字符串内容,参数2是可选的,表示是否是一个错误日志。区别在于如果参数2是true的话,创建文件时会添加 -error 文件名字。系统使用示例: if (ZBlogException::$islogerror == true) {
Logs(var_export(array('Error', $errno, $errstr, $errfile, $errline), true), true);
}
RunTime()页面运行时间,返回数组,包含 time,query,memory,error 4个元素。系统使用示例:RunTime(); //
GetEnvironment()获得系统信息,返回的类似于“WINNT; Apache2.2.25; PHP 5.4.44; mysqli; curl”的字符串。
plugin_dir_url($file)通过文件获取应用的URL地址。这个函数通过文件名称参数。这个函数在系统中没有看到有使用。【代码暂不研究】
plugin_dir_path($file)通过文件获取应用目录路径。这个函数通过文件名称参数。
GetValueInArray($array, $name)通过key从数组获取数据
参数1:数组名
参数2:下表key
返回结果。 $array[$name]
GetValueInArrayByCurrent($array, $name)获取数组中的当前元素数据。参数一样,结果通过调用上面那个函数返回。
GetGuid()获得GUID。uniqid函数获得当前时间微秒数的唯一ID,参数1是生成改ID的前缀,参数2如果设置为true,则生成长度为23的唯一ID,以便让GUID更唯一。trim函数去除字符串首尾为“zbp”的字符。str_replace函数将字符串中的点替换为空。最后返回该字符串。
GetVars($name, $type = 'REQUEST')获取参数值。
参数1:必须,数组的key名。
参数2:类型。默认为 REQUEST。
返回字符串或者null。
这个函数其实就是返回 $GLOBALS 数组指定类型的数组的某个元素的值。
GetVarsByDefault($name, $type = 'REQUEST', $default = null)获取参数值(可设置默认返回值)
参数1:数组KEY名
参数2:类型。默认 REQUEST。
参数3:默认返回值。默认为 null。
这个函数和上一个函数相似,只是这个函数可以设置见过为 null 或者空时的返回值。比如设置为 error 则见过是null或者空时返回 error。
GetDbName()获取数据库名。返回一个随机的SQLite数据文件名。例如:#%20590ac99bc939a751693701.db
GetCurrentHost($blogpath, &$cookiespath)获得当前网站地址
参数1:网站域名
参数2:返回cookie作用域,通过引用实现。
返回:网站的完整地址,如 http://localhost/zbp/
GetHttpContent($url)通过URL获取远程页面内容
参数为URL地址,返回页面文本内容,默认为 null。
GetDirsInDir($dir)获得目录下文件夹列表
参数1:目录名字
返回数组,文件夹列表。
GetFilesInDir($dir, $type)获取目录下制定类型文件列表
参数1:目录名字
参数2:文件类型,以|分隔
返回数组,文件列表
SetHttpStatusCode($number)设置http状态头。参数为int类型的状态值。返回true或者false表示是否设置成功。
Redirect($url)302跳转,参数为跳转链接
Redirect301($url)301跳转,参数为跳转链接
Http404()404跳转
Http500()500跳转
Http503()503跳转
Http304($filename, $time)设置304缓存头
参数1:文件名,参数2:缓存时间。
GetGuestIP()获取客户端IP,返回IP地址。使用$_SERVER['REMOTE_ADDR']获取。
GetGuestAgent()获得获取客户端Agent。使用$_SERVER['HTTP_USER_AGENT']获取。
GetRequestUri()获得请求来源,返回URL。
GetFileExt($f)获取文件后缀名。返回小写的后缀名。
GetFilePermsOct($f)获取文件权限,参数为文件名,返回文件权限,数值格式,如0644。
GetFilePerms($f)获取文件权限,参数为文件名,返回文件权限,字符表达格式,如-rw-r--r--。
AddNameInString($s, $name)向字符串型的参数表加入一个新参数。
参数1:字符串型的参数表,以|符号分隔
参数2:参数名
返回:返回新字符串,以|符号分隔
DelNameInString($s, $name)从字符串型的参数表中删除一个参数。
参数1:字符串型的参数表,以|符号分隔
参数2:参数名
返回:返回新字符串,以|符号分隔
HasNameInString($s, $name)在字符串参数值查找参数。
参数1:字符串型的参数表,以|符号分隔
参数2:参数名
返回:bool
JsonError4ShowErrorHook($errorCode, $errorString, $file, $line)以JSON形式返回错误信息(用于ShowError接口)。
调用下面这个函数返回结果。
JsonError($errorCode, $errorString, $data)以JSON形式返回错误信息。
参数1:错误编号
参数2:错误内容
参数3:object
返回:JSON格式字符串
JsonReturn($data)以JSON形式返回正确获取信息。参数是要返回的数据。
RespondError($errorCode, $errorString)XML-RPC应答错误页面。
参数1:错误代码
参数2:错误提示字符串
ScriptError($faultString)XML-RPC脚本错误页面,参数为错误提示字符串。
CheckRegExp($source, $para)验证字符串是否符合正则表达式。
参数1:字符串
参数2:正则表达式,可用[username]|[password]|[email]|[homepage]或自定义表达式
返回;bool
TransferHTML($source, $para)通过正则表达式格式化字符串。
参数1:字符串
参数2:正则表达式,可用[html-format]|[nohtml]|[noscript]|[enter]|[noenter]|[filename]|[normalname]或自定义表达式
返回:字符串
CloseTags($html)封装HTML标签。参数为html源码。
SubStrUTF8_Start($sourcestr, $start, $cutlength)获取UTF8格式的字符串的子串。
参数1:源字符串
参数2:起始位置
参数3:子串长度
返回:字符串
SubStrUTF8($sourcestr, $cutlength)获取UTF8格式的字符串的子串
参数1:源字符串
参数2:子串长度
返回:字符串
和上面函数不同的是这个函数只能从开头取。
SubStrUTF8_Html($sourcestr, $cutlength)截取HTML格式的UTF8格式的字符串的子串。
参数1:源字符串
参数2:子串长度
返回:字符串
RemoveBOM($s)删除文件BOM头,参数为文件内容。这个函数实际上只是去掉字符串开头的 BOM 的字符。str_replace函数将字符串中的点替换为空。最后返回该字符串。
GetTimeZonebyGMT($z)获取指定时区名。
参数1:时区号
返回:时区名
如,输入 8,返回 Asia/Shanghai。如果指定的时区号没有定义,返回默认值 UTC。
htmlspecialchars_array($array)对数组内的字符串进行htmlspecialchars。参数是待过滤字符串数组
FilterCorrectName($s)获得一个只含数字字母和-线的string,参数是字符串。
CheckCanBeString($obj)确认一个对象是否可被转换为string,返回bool
下面这些函数和数据库相关的
utf84mb_filter(&$sql)执行一个正则表达式搜索并且使用一个回调进行替换,替换的utf84mb_convertToUCS4是回调函数
utf84mb_fixHtmlSpecialChars()
utf84mb_convertToUCS4($matches)
utf84mb_convertToUTF8($matches)
VerifyWebToken($wt,$wt_id)验证Web令牌。参数1是令牌字符串,参数2是令牌ID。
CreateWebToken($wt_id,$time)创建Web令牌。参数1是令牌ID,参数2是令牌过期时间。
以下是该文件的功能代码。这个文件会在系统初始化阶段第4位加载。
//处理PHP版本兼容代码
如果没有定义hex2bin这个函数,这自己实现一个。
如果没有定义rrmdir这个函数,则自己实现一个。
如果下面这些常量不存在,则定义如下:
HTTP_URL_REPLACE = 1
HTTP_URL_JOIN_PATH = 2
HTTP_URL_JOIN_QUERY = 4
HTTP_URL_STRIP_USER = 8
HTTP_URL_STRIP_PASS = 16
HTTP_URL_STRIP_AUTH = 32
HTTP_URL_STRIP_PORT = 64
HTTP_URL_STRIP_PATH = 128
HTTP_URL_STRIP_QUERY = 256
HTTP_URL_STRIP_FRAGMENT = 512
HTTP_URL_STRIP_ALL = 1024
如果没有定义http_build_url函数,自己实现一个。
同上,gzdecode和session_status函数也是。
这篇文章并没有详细的解读各个语句的意思,原因在于这个文件的大部分都是函数的实现,并没有多少逻辑代码会影响博客系统的实现,我们需要做的只是调用函数即可。对于部分函数的实现,或许以后会专门研究。