PHP自定义函数
发布时间:2025-05-22 03:11:50 发布人:远客网络
一、PHP自定义函数
1、outPut函数默认$newName参数为空,也就是说调用outPut时可以不传第三个参数
2、那么执行的时候就是imagejpeg($img);如果传了第三个参数那么if条件语句就判断不通过,那么将会执行imagejpeg($img,$newName)
3、imagejpeg函数有第二个参数的时候是将img指定输出到第二个参数所指定的文件名,
4、如果没有第二个参数,默认输出到浏览器
二、php中的类有什么用和自定义函数有什么区别
1、请看PHP手册18章,里面的内容你看了就明白。
2、类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:
3、//将$num个$artnr物品加入购物车
4、functionadd_item($artnr,$num){
5、$this->items[$artnr]+=$num;
6、//将$num个$artnr物品从购物车中取出
7、functionremove_item($artnr,$num){
8、if($this->items[$artnr]>$num){
9、$this->items[$artnr]-=$num;
10、}elseif($this->items[$artnr]==$num){
11、unset($this->items[$artnr]);
12、上面的例子定义了一个Cart类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。
13、不能将一个类的定义分割到多个文件中。也不能将一个类的定义分割到多个PHP块中,除非该分割是在一个方法声明内部。以下用法将不起作用:
14、名称stdClass已经被Zend使用并保留。不能在PHP代码中定义名为stdClass的类。
15、函数名__sleep和__wakeup在PHP类中是魔术函数。除非想要与之联系的魔术功能,否则在任何类中都不能以此命名函数。
16、PHP将所有以__开头的函数名保留为魔术函数。除非想要使用一些见于文档中的魔术功能,否则建议不要在PHP中将函数名以__开头。
17、在PHP4中,var变量的值只能初始化为常量。用非常量值初始化变量,需要一个初始化函数,该函数在对象被创建时自动被调用。这样一个函数被称之为构造函数(见下面)。
18、var$todays_date=date("Y-m-d");
19、var$owner='Fred'.'Jones';
20、$this->todays_date=date("Y-m-d");
21、$this->name=$GLOBALS['firstname'];
22、类也是一种类型,就是说,它们是实际变量的蓝图。必须用new运算符来创建相应类型的变量。
23、$another_cart->add_item("0815",3);
24、上述代码创建了两个Cart类的对象$cart和$another_cart,对象$cart的方法add_item()被调用时,添加了1件10号商品。对于对象$another_cart,3件0815号商品被添加到购物车中。
25、$cart和$another_cart都有方法add_item(),remove_item()和一个items变量。它们都是明显的函数和变量。可以把它们当作文件系统中的某些类似目录的东西来考虑。在文件系统中,可以拥有两个不同的README.TXT文件,只要不在相同的目录中。正如从为了根目录访问每个文件需要输入该文件的完整的路径名一样,必须指定需要调用的函数的完整名称:在PHP术语中,根目录将是全局名字空间,路径名符号将是->。因而,名称$cart->items和$another_cart->items命名了两个不同的变量。注意变量名为$cart->items,不是$cart->$items,那是因为在PHP中一个变量名只有一个单独的美元符号。
26、$cart->items=array("10"=>1);
27、//不正确,因为$cart->$items变成了$cart->""
28、$cart->$items=array("10"=>1);
29、//正确,但可能不是想要的结果:
30、//$cart->$myvar变成了$cart->items
31、$cart->$myvar=array("10"=>1);
32、在定义类的时候,无法得知将使什么名字的对象来访问:在编写Cart类时,并不知道之后对象的名称将会命名为$cart或者$another_cart。因而你不能在类中使用$cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量$this来达到这个目的。$this变量可以理解为“我自己的”或者“当前对象”。因而'$this->items[$artnr]+=$num'可以理解为“我自己的物品数组的$artnr计数器加$num”或者“在当前对象的物品数组的$artnr计数器加$num”。
33、注意:伪变量$this通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则$this会被定义。此时$this的值是那个发出调用的对象。用下例演示:
34、echo'$thisisdefined(';
35、echo"\$thisisnotdefined.\n";
36、注意:有一些不错的函数用来处理类和对象。应该关注一下类/对象函数。
三、自定义PHP分页函数
//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
//定义函数pageft(),三个参数的含义为:
//$displaypg:每页显示信息数,这里设置为默认是20;
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
//默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
function pageft($totle,$displaypg=20,$url=''){
//$firstcount:(数据库)查询的起始项;
//$pagenav:页面导航条代码,函数内部并没有将它输出;
//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。
global$page,$firstcount,$pagenav,$_SERVER;
//为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
$GLOBALS["displaypg"]=$displaypg;
//如果$url使用默认,即空值,则赋值为本页URL:
if(!$url){$url=$_SERVER["REQUEST_URI"];}
$url_query=$parse_url["query"];//单独取出URL的查询字串
//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
//这里用到了正则表达式,请参考“PHP中的正规表达式”()
$url_query=ereg_replace("(^|&)page=$page","",$url_query);
//将处理后的URL的查询字串替换原来的URL的查询字串:
$url=str_replace($parse_url["query"],$url_query,$url);
//在URL后加page查询信息,但待赋值:
if($url_query)$url.="&page"; else$url.="page";
$lastpg=ceil($totle/$displaypg);//最后页,也是总页数
$nextpg=($page==$lastpg? 0:$page+1);//下一页
$firstcount=($page-1)*$displaypg;
$pagenav="显示第<B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B>条记录,共$totle条记录";
if($lastpg<=1) return false;
$pagenav.="<a href='$url=1'>首页</a>";
if($prepg)$pagenav.="<a href='$url=$prepg'>前页</a>"; else$pagenav.="前页";
if($nextpg)$pagenav.="<a href='$url=$nextpg'>后页</a>"; else$pagenav.="后页";
$pagenav.="<a href='$url=$lastpg'>尾页</a>";
//下拉跳转列表,循环列出所有页码:
$pagenav.="到第<select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n";
for($i=1;$i<=$lastpg;$i++){
if($i==$page)$pagenav.="<option value='$i' selected>$i</option>\n";
else$pagenav.="<option value='$i'>$i</option>\n";
$pagenav.="</select>页,共$lastpg页";
include("pageft.php");//包含“pageft.php”文件
$result=mysql_query("select* from mytable");
$total=mysql_num_rows($result);
//调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。
//现在产生的全局变量就派上用场了:
$result=mysql_query("select* from mytable limit$firstcount,$displaypg");
while($row=mysql_fetch_array($result)){
$numrows= mssql_num_rows($result);
pageft($numrows,$pagesize,$Url);
$sql="select top$pagesize* from zhufu where(id not in(select top$firstcount id from zhufu order by id desc)) order by id desc";
while($row=mssql_fetch_assoc($result1))
$row1=trim($row["city"]).trim($row["xuexiao"]);
<td class='bline fontblack' align='center'>".$row["id"]."</td>
<td class='bline' align='left'><span class='fontgreen'><font color='green'>".trim(iconv("gb2312","utf-8",$row["sendname"]))."</font></span>给".trim(iconv("gb2312","utf-8",$row1))."的<font color='blue'>".trim(iconv("gb2312","utf-8",$row["name"]))."</font>的祝福:<a href='info.php?id=".$row["id"]."' target='_blank'><font color='#E60638'>".trim((cut_str(iconv("gb2312","utf-8",$row["neirong"]),20)))."....</font></a></td>
<td class='bline' align='center'>".$row["riqi"]."</td>