php学习笔记-php自定义函数-day05

php函数

php函数包括三种类型,内置函数,自定义函数,变量函数。

内置函数,即php内部提供的原生的,预定义好的,直接可调用使用的函数。

自定义函数,程序员自定义的函数,定义声明后才可使用。

变量函数,变量函数类似可变变量,变量函数的函数名为一个变量。(有点和js函数一样的感觉)

1.自定义函数

自定义函数格式:

	function functionName($param1,$param2,$param3,...$paramn=defaultValue){
		函数体
		return 返回值;
	}

其中 function ,是用来定义自定义函数的关键字,不区分大小写。functionName ,是自定义的函数名。$param是定义函数的形参。defaultValue,函数参数的默认值。 函数体,是函数功能的实现,在函数被调用时执行的语句块。return 即为返回值,其返回值可以是任意一种数据类型,函数可以没有返回值,这个需要自定义的功能来看

2.自定义函数的声明和调用

2.1 同文件调用自定义函数

在同文件中调用已经定义好的函数,直接使用函数名调用即可。

无参无返回值自定义函数示例 sayHello():

	//定义函数sayHello,它的功能是输出一句hello
	function sayHello(){
	    echo "hello"."\n";// hello
	}
	// 在同文件中调用直接使用函数名调用即可
	sayHello(); 

有参有返回值自定义函数示例 sum():

	function sum($a,$b){
	    return floatval($a+$b);//因为函数体比较简单,直接使用return关键字返回计算结果即可
	}
	
	$end =  sum(2,3);
	echo $end;// 5  

2.2 跨文件调用自定义函数

通常,我们定义一个某种特定的功能函数,会被整个php程序频繁的调用,而且很多情况是跨文件调用。

跨文件调用,需要了解几个php语言结构(提供php文件间的相互引用功能,提高代码的重用性)。

include ,require 语言结构

include 语言结构的语法格式 : mixed include ( string resource)
include 语言结构的功能 : include语言结构将一个资源文件 resource 载入到当前的php程序中, resource是一个资源文件的文件名。若找不到resource对应的文件则返回false,找到resource文件且其没有返回值时,include返回整数1,若resource有返回值,则include返回其返回值。
tip:(资源文件可以是php本地服务器的图片,html,php页面等,也可以是互联网上的资源(使用互联网上的资源,需要将php.ini配置文件中的allow_url_include设置为on,表示开启允许载入互联网资源)。

require 语言结构的语法格式 : mixed require ( string resource)
require 语言结构的功能 : 与上面的include基本一致,唯一的区别就是,include语言结构载入文件,如果出现错误后会提示错误信息然后继续执行;而require语言结构载入文件,如果出现错误后会提示错误信息然后停止执行

跨文件使用自定义函数例子:

先写一个untils.php,用来被其他php文件调用:

	<?php
	// 这里只为了演示跨文件调用功能,函数写的很简陋

	function sum($a,$b){
	    return intval($a+$b);
	}
	
	function sub($a,$b){
	    return intval($a-$b);
	}
	
	function mul($a,$b){
	    return intval($a*$b);
	}
	
	function div($a,$b){
	    return intval($a/$b);
	}
 
	?>

创建一个 main1.php 并且 使用 include 语言结构将 untils.php 载入:

	// 使用include语言结构,引入刚刚写的自定义工具函数php文件 untils.php
	include("untils.php");
	echo sum(1,2)."\n";//3
	echo sub(1,1)."\n";//0
	echo mul(1,2)."\n";//2
	echo div(2,2)."\n";//1
	// 故意设置一个错误的资源文件,查看输出
	include "untils1.php";// Warning: include(untils1.php): failed to open stream: No such file or directory
	echo "include语言结构载入文件错误时,会会提示错误信息,并且继续执行剩下的代码~~~~";

创建一个 main2.php 并且 使用 require 语言结构将 untils.php 载入:

	// 使用require语言结构,引入刚刚写的自定义工具函数php文件 untils.php
	require("untils.php");
	echo sum(1,2)."\n";//3
	echo sub(1,1)."\n";//0
	echo mul(1,2)."\n";//2
	echo div(2,2)."\n";//1
	// 故意设置一个错误的资源文件,查看输出
	require "untils1.php";// Warning: include(untils1.php): failed to open stream: No such file or directory
	// 下面的这句输出不会显示 原因就是require的特点,遇到错误信息时,反馈错误信息后便停止运行
	echo "require 语言结构载入文件错误时,会提示错误信息,然后终止程序的运行~~~~";

include_once ,require_once 语言结构

include_once 和 require_once 这两种语言结构可以说是对上面的include和require的完善和补充。

因为随着程序规模的扩大,同一程序多次使用include或require来载入同一个资源文件,这样会导致资源文件混乱的问题,为了解决这个问题,便提出了 include_once ,require_once 语言结构,确保同一个资源文件只被引用一次

使用方法和上面的 include ,require 语言结构基本一样就不过多赘述。

2.3 自定义函数的参数赋值

自定义函数参数的赋值,也分为传值赋值和传地址赋值(与变量赋值和数组赋值一样)。

传值赋值,不会改变原有的值内容;而传地址赋值,会改变原有的值内容。

如下代码:

传值赋值:

	$a = 3;

	// 使用传值赋值,在不重新赋值的情况下,变量本身的值内容不会发生改变
	function add1($a){
	    $a = intval($a+1);// 局部变量只在函数体内有效
	    return $a;
	}
	
	echo add1($a)."\n";// 4
	
	echo $a; //3

传地址赋值:

	$a = 3;
	// 使用传地址赋值,原有的变量的值内容发生改变
	function add2(&$a){
	    $a +=1;
	    return  $a;
	}
	
	echo add2($a)."\n";// 4
	
	echo $a; //4

3.变量的作用域 及 生命周期

变量的作用域包括,全局变量和局部变量。(变量的作用域,取决于变量在php程序中的位置)。

  • 1.在函数内定义的变量(包括函数的参数)为局部变量,局部变量在调用函数结束后自动被回收释放。
  • 2.函数定义外的变量为全局变量,在当前的pphp程序中都可以访问到,当整个当前php程序被执行完毕后才会回收释放。

变量的生命周期也其实就是它的作用域,函数体内变量的生命周期就是从函数开始执行到函数执行完毕,而全局变量的生命周期就是当前php程序执行开始到执行完毕。

4.global 关键字 和 static 关键字

使用global关键字会将变量的作用域变为全局变量

global关键字用法的注意事项:

  • 1.不能使用global定义函数的参数
  • 2.在函数内使用global定义全局变量的同时,不能使用赋值语句给该变量赋值
  • 3.global可以一次性的定义多个全局变量。(global $a,$b,$c;
  • 4.在函数内使用global语句定义全局变量时,如程序已经存在该全局变量,则拿来直接使用,如果不存在则创建。
  • 5.经过global定义的全局变量,php会将该变量的定义放到$_GLOBALS数组中,数组的键该全局变量的变量名,数组的值为该全局变量的变量值。

static 关键字 可以将函数体内的变量从这次调用一直存活到下次调用。

static 关键字用法的注意事项:

  • 1.static主要用来修饰函数体内的变量,不能使用static定义函数的参数
  • 2.静态变量旨在php程序的当前执行有效,如果重新启动了程序,则一切又将重新开始。
  • 3.经static修饰的变量一般要进行初始化。
  • 4.static可以一次性的定义多个静态全局变量。(static $a,$b,$c;

5.return exit die

5.1 return

return是语言结构而不是函数。

如果一个函数中包含return 语句,当调用此函数时,函数的执行只会进行到return这一步,return之后的语句都不会执行,并将return的参数作为函数的值返回。

如果在全局范围中调用,则当前php文件中止运行。如果当前php文件是被 include 的或者 require 的,则控制交回调用文件。此外,如果当前php文件是被 include 的,则 return 的值会被当作 include 调用的返回值,相应的在主php文件中定义一个变量进行返回值的接收。
如果在主php文件中调用 return,则php程序中止运行。

5.2 exit()

输出一个消息并且退出当前脚本。

语法格式: void exit ([ string $status ] ) , void exit ( int $status )

如果 status 是一个字符串,在退出之前该函数会打印 status 。
如果 status 是一个 integer,该值会作为退出状态码,并且不会被打印输出。 退出状态码应该在范围0至254,不应使用被PHP保留的退出状态码255。 状态码0用于成功中止程序。
Note: PHP >= 4.2.0 当 status 是一个 integer,不会打印输出。

5.3 die()

关于die()的使用,官方文档给的是结构与die()一致。

5.4 三者比较

die与exit

手册上标明 "die — Equivalent to exit().This language construct is equivalent to exit().”
但在实际代码过程中可以存在一定的选择差别,例如这样:涉及到提前终止程序/脚本执行的情况,使用exit();当程序出错,为了停止执行并显示提示信息时,使用die()。

return与exit(或die)

如果在全局范围内调用exit()或return,它们产生影响是一样,即中止当前脚本运行,在其他范围内调用两者,return始终会返回值,不管当前文件被include/require。


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀死一只知更鸟debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值