第一篇:PHP的构造函数-php教程
PHP的构造函数
本php教程主要学习PHP的构造函数。
在面向对象编程中有个很特别的函数,这个函数称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。因为只要PHP的类一加载就会自动执行此函数,一般初始化的工作都放在此函数中。
1.构造函数和其它函数一样,可以传递参数,可以设定参数默认值。
2.构造函数可以调用属性,可以调用方法。
3.构造函数可以被其它方法显式调用。
在之前的PHP版本中,构造函数使用和类名同名来进行对象的初始化工作,但后面发现如果要更改类名,同时就要更改它的构造方法,所以在PHP5中,就被用__construct()函数来实现.__construct()前面是两个下划线组成,不要以为是一个下划线.与构造函数相对应的是析构函数.当某个对象成为垃圾或者当对象被显式销毁时执行。__destruct()析构函数,是在垃圾对象被回收时执行。
1.不要在程序中调用一个对象的析构函数。
2.析构函数不能带有参数。
3.通常在程序结束后PHP会自动执行垃圾回收。
在这里有个问题先提下,因为我们创建一个类,有时候会有多个实例,那么构造函数是怎么进行调用的呢。php的构造函数调用是从自身向上查找,执行最近的一个来进行调用。
关于这个构造函数在以后再进行补充吧,它的基本知识点就这些吧,相信在遇到__construct()等莫名的函数而不知所措了。至于它的实际应用到时候再说吧,今天就不举例了,好不容易今天不要上班,难得呀。
第二篇:php开发中常用函数总结
php开发中常用函数总结
1.获取IP2.时间的增加3.检查日期是否合法日期4.时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天5.PHP重定向6.获取访问者浏览器7.获取访问者操作系统8.文件格式类9.php生成excel文档10.时间比较问题11.提取页面和浏览器提交的变量,作用相当于使PHP.INI开了全局变量12.读取文件函数13.写入文件函数14.页面快速转向15.产生随机字符串函数16.截取一定长度的字符串(该函数对GB2312使用有效)17.取得客户端IP地址18.判断邮箱地址19.分页(两个函数配合使用)20.获取新插入数据的ID21.获得当前的脚本网址22.把全角数字转为半角数字23.去除HTML标记24.相对路径转化成绝对路径26.取得所有链接27.HTML表格的每行转为CSV格式数组28.将HTML表格的每行每列转为数组,采集表格数据29.返回字符串中的所有单词 $distinct=true 去除重复30.打印出为本PHP项目做出贡献的人员的清单
function GetIP(){ //获取IP
if($_SERVER[“HTTP_X_FORWARDED_FOR”])
$ip = $_SERVER[“HTTP_X_FORWARDED_FOR”];
else if($_SERVER[“HTTP_CLIENT_IP”])
$ip = $_SERVER[“HTTP_CLIENT_IP”];
else if($_SERVER[“REMOTE_ADDR”])
$ip = $_SERVER[“REMOTE_ADDR”];
else if(getenv(“HTTP_X_FORWARDED_FOR”))
$ip = getenv(“HTTP_X_FORWARDED_FOR”);
else if(getenv(“HTTP_CLIENT_IP”))
$ip = getenv(“HTTP_CLIENT_IP”);
else if(getenv(“REMOTE_ADDR”))
$ip = getenv(“REMOTE_ADDR”);
else
$ip = “Unknown”;
return $ip;}?>{downsource}
$dateArr = explode(“-”, $date);$value[$unit] = $int;return date(“Y-m-d”, mktime(0,0,0, $dateArr[1] + $value['m'], $dateArr[2] + $value['d'], $dateArr[0] + $value['y']));}function GetWeekDay($date){ //计算出给出的日期是星期几
$dateArr = explode(“-”, $date);return date(“w”, mktime(0,0,0,$dateArr[1],$dateArr[2],$dateArr[0]));}?>{downsource}
$dateArr = explode(“-”, $date);if(is_numeric($dateArr[0])&& is_numeric($dateArr[1])&& is_numeric($dateArr[2])){ return checkdate($dateArr[1],$dateArr[2],$dateArr[0]);} return false;}function check_time($time){ //检查时间是否合法时间
$timeArr = explode(“:”, $time);if(is_numeric($timeArr[0])&& is_numeric($timeArr[1])&& is_numeric($timeArr[2])){ if(($timeArr[0] >= 0 && $timeArr[0] <= 23)&&($timeArr[1] >= 0 && $timeArr[1] <= 59)&&($timeArr[2] >= 0 && $timeArr[2] <= 59))return true;else return false;} return false;}function DateDiff($date1, $date2, $unit = “"){ //时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天
switch($unit){ case 's': $dividend = 1;break;case 'i': $dividend = 60;break;case 'h': $dividend = 3600;break;case 'd': $dividend = 86400;break;default: $dividend = 86400;} $time1 = strtotime($date1);$time2 = strtotime($date2);if($time1 && $time2)return(float)($time11;mt_srand((double)microtime()* 1000000);for($i = 0;$i < $length;$i++){ $hash.= $chars[mt_rand(0, $max)];}return $hash;}?>{downsource}截取一定长度的字符串(该函数对GB2312使用有效) $length){ if($sss){ $length=$length-3;$addstr=@#...@#;} for($i = 0;$i < $length;$i++){ if(ord($string[$i])> 127){ $wordscut.= $string[$i].$string[$i + 1];$i++;} else { $wordscut.= $string[$i];} } return $wordscut.$addstr;}return $string;}?>{downsource}取得客户端IP地址{downsource}判断邮箱地址{downsource}分页(两个函数配合使用)
global $page,$totalpage;$out=”共“.$totalpage.”页 “;$linkNum =4;$start =($page-round($linkNum/2))>0 ?($page-round($linkNum/2)): ”1“;$end =($page+round($linkNum/2))<$totalpage ?($page+round($linkNum/2)): $totalpage;$prestart=$start-1;$nextend=$end+1;if($page<>1)$out.= ”第一页 “;if($start>1)$out.=”..<< “;for($t=$start;$t<=$end;$t++){ $out.=($page==$t)? ”[“.$t.”] “ : ”$t “;}if($end<$totalpage)$out.=”>>..“;if($page<>$totalpage)$out.= ” 最后页“;return $out;}?>{downsource}获取新插入数据的ID{downsource}//获得当前的脚本网址
if(empty($_SERVER[”QUERY_STRING“]))$nowurl = $scriptName;else $nowurl = $scriptName.”?“.$_SERVER[”QUERY_STRING“];} return $nowurl;}?>{downsource}//把全角数字转为半角数字{downsource}//去除HTML标记“,”>“,$txt);$txt = preg_replace(”/[rn]{1,}/isU“,”rn“,$txt);return $txt;}?>{downsource}//相对路径转化成绝对路径
preg_match('/(http|https|ftp):///', $feed_url, $protocol);$server_url = preg_replace(”/(http|https|ftp|news):///“, ”“, $feed_url);
$server_url = preg_replace(”//.*/“, ”“, $server_url);
if($server_url == ''){
return $content;
}
if(isset($protocol[0])){
$new_content = preg_replace('/href=”//', 'href=“'.$protocol[0].$server_url.'/', $content);
$new_content = preg_replace('/src=”//', 'src=“'.$protocol[0].$server_url.'/', $new_content);
} else {
$new_content = $content;
}
return $new_content;} ?>{downsource}//取得所有链接
preg_match_all('/
return array('name'=>$arr[2],'url'=>$arr[1]);}?>{downsource}//HTML表格的每行转为CSV格式数组]*?>'si”,'“',$table);$table = str_replace(”“,'”,',$table);$table = str_replace(“”,“{tr}”,$table);//去掉 HTML 标记
$table = preg_replace(“'<[/!]*?[^<>]*?>'si”,“",$table);//去掉空白字符
$table = preg_replace(”'([rn])[s]+'“,”“,$table);$table = str_replace(” “,”“,$table);$table = str_replace(” “,”“,$table);$table = explode(”,{tr}“,$table);
array_pop($table);return $table;}?>{downsource}//将HTML表格的每行每列转为数组,采集表格数据]*?>'si“,”“,$table);$table = preg_replace(”'
$table = preg_replace(”'<[/!]*?[^<>]*?>'si“,”“,$table);//去掉空白字符
$table = preg_replace(”'([rn])[s]+'“,”“,$table);$table = str_replace(” “,”“,$table);$table = str_replace(” “,”“,$table);
$table = explode('{tr}', $table);
array_pop($table);foreach($table as $key=>$tr){ $td = explode('{td}', $tr);array_pop($td);$td_array[] = $td;} return $td_array;}?>{downsource}//返回字符串中的所有单词 $distinct=true 去除重复{downsource}//打印出为本PHP项目做出贡献的人员的清单 //生成随机密码function randStr($len=6){//用来产生密码的字符串$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';$password=”";while(strlen($password)<$len)
$password.=substr($chars,(mt_rand()%strlen($chars)),1);return $password;
}
第三篇:不得不防的PHP危险函数
不得不防的PHP危险函数
用PHP语言建设网站,安全问题是每个PHP程序员必须考虑的问题,在PHP运用的过程中一些PHP危险函数却不得不防,南京PHP培训小编把PHP危险函数列出来,供大家参考。
phpinfo()功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。危险等级:中 passthru()功能描述:允许执行一个外部程序并回显输出,类似于 exec()。危险等级:高 exec()功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。危险等级:高 system()功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。危险等级:高 chroot()功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式 PHP 时才能工作,且该函数不适用于 Windows 系统。危险等级:高 scandir()功能描述:列出指定路径中的文件和目录。危险等级:中 chgrp()功能描述:改变文件或目录所属的用户组。危险等级:高 chown()功能描述:改变文件或目录的所有者。危险等级:高 shell_exec()功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。危险等级:高 proc_open()功能描述:执行一个命令并打开文件指针用于读取以及写入。危险等级:高 proc_get_status()功能描述:获取使用 proc_open()所打开进程的信息。危险等级:高 error_log()功能描述:将错误信息发送到指定位置(文件)。
安全备注:在某些版本的 PHP 中,可使用 error_log()绕过 PHP safe mode,执行任意命令。危险等级:低 ini_alter()功能描述:是 ini_set()函数的一个别名函数,功能与 ini_set()相同。具体参见 ini_set()。危险等级:高 ini_set()功能描述:可用于修改、设置 PHP 环境配置参数。危险等级:高 ini_restore()功能描述:可用于恢复 PHP 环境配置参数到其初始值。危险等级:高 dl()功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。危险等级:高 pfsockopen()功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。危险等级:高 syslog()功能描述:可调用 UNIX 系统的系统层 syslog()函数。危险等级:中 readlink()功能描述:返回符号连接指向的目标文件内容。危险等级:中 symlink()功能描述:在 UNIX 系统中建立一个符号链接。危险等级:高 popen()功能描述:可通过 popen()的参数传递一条命令,并对 popen()所打开的文件进行执行。
危险等级:高
stream_socket_server()功能描述:建立一个 Internet 或 UNIX 服务器连接。危险等级:中 putenv()功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。危险等级:高
第四篇:PHP中时间和日期函数总结
PHP中时间和日期函数总结
2007-11-29 00:40:28 标签:php 时间 日期函数
PHP中所有函数都是UNIX纪元的,即从1970年1月1日开始的。日期是从这个时候开始的秒数。当一个函数调用从这时候计的秒数时,就把它当作(timestamp)时间戳。本地时间函数
1.string date(string format,inieger timestamp)该函数返回一个表示时间的字符串,是由string format 控制的。如: print(date(“Y年 m月d日”);//输出当前,年月日.print(date(“Y年 m月d日”,60*60*24*365*10);//输出1980年1月1日.?> 也许你会问,怎麽没有timestamp呢?若timestamp为空时,或不写时,表示使用当前时间一刻timestamp.表示年份的控制符: Y---四位的年份 y---两位的年份
表示月份的控制符: m---从1-12的月份 F---英文月份名 M---简写的月份名 表示日号的控制符: d---前面有0的月份中日期 j--前面没有0的日号 表示星期的控制符: l--英文星期 D--简写的星期
表示小时的控制符: h--从1到12小时 H---从0到23的小时 表示上下午的控制符 a---am或pm A---AM或PM 表示分钟的控制符: i---取值00-59 表示一年中第多少天: z--一年中的第多少天 2.array getdate(integer timestamp)该函数返回一个矩阵.如: $current_date=getdate();print($current_date(“hours”));print($current_date(“minutes”);print($current_date(“seconds”);?> 说明: 元素 描述
hours 24小时格式的小时 mday 月份中日期 minutes 分钟
mon 数字形式的月份 month 月份全称 seconds 秒数
wday 从0到6的数字形式的星期几 weekday 星期几的名称 year 年份
0 时间戳即从1970年1月1日到现在的秒数 yday 一年中数字形式的日期
3.boolean checkdate(integer month,integer day,integer year)该函数检查日期是否合法.如: if(checkdate(2,29,1980))print(“日期合法!n”);?> 4.integer time()该函数获得当前时间戳.如: print(time());//输出一大串整数 ?> 5.integer mktime(integer hour,integer minutes,integer seconds,integer month, integer day,integer year)该函数返回给出日期的时间戳,即从1970年1月1日到现在的秒数.如某参数超出范围,该函数也可以解释它,如13月即为第二年的一月.如: $currenthour=date(“H”);print(“50个小时后为:”);print(date(“h:i A l F dS,Y”,mktime($currenthour+50)));print(“
n”);?> 6.string microtime()该函数返回一个字符串,由当前时间的毫秒数+空格+从1970年开始的秒数 print(“start:microtime()
n”);for($index=0;$index<1000;$index++)print(“good!”);print(“stop:microtime()
n”);?> 还有,各林威治标准时间函数
第五篇:PHP学习之输出控制函数
PHP学习之输出控制函数
PHP提供了一类比较特殊的函数,这类函数称为输出控制函数。输出控制函数可以用来控制脚本的输出。这些函数在某些特殊情况下很有用,特别是脚本中已经输出了信息之后,再想向浏览器发送头信息的情况。输出控制函数不会作用于 header()或 setcookie()函数发送的头信息,而只会影响类似于 echo,print输出的信息和嵌入在 PHP 代码之间的信息。
1、ob_start():打开输出缓冲区
函数原型:void ob_start(void)。此函数用于打开输出缓冲区。当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
2、ob_flush()
函数原型:void ob_flush(void)。这个函数将送出缓冲区的内容。
3、ob_end_clean()
函数原型:bool ob_end_clean(void)。此函数清空输出缓冲区的内容并关闭这个缓冲区。值得注意的是,这个函数不会发送缓冲区的内容,而是把缓冲区清空。
4、ob_clean()
函数原型:bool ob_end_clean(void)。此函数会将缓冲区内容清除,但不关闭缓冲,可继续向其中写入内容。
5、ob_end_flush()
函数原型:void ob_end_flush(void)。此函数发送缓冲区的内容到浏览器,并且关闭输出缓冲区。
6、ob_get_contents()
函数原型:string ob_get_contents(void)。这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE。
7、ob_get_length()
函数原型:int ob_get_length(void)。这个函数会返回当前缓冲区中的长度。
平时我们可能不常接触到输出控制函数,可是前面说了,输出控制函数是很有用的,比如可以解决诸如:Header had already send by!之类的header错误。