PHP基础-自定义函数

一、函数的声明

  • 语法:
function 函数名([arg1][,arg2]...[,argN]){
    .....函数体功能代码段...
    return 返回值;                    //没有返回值则为NULL
}
  • 参数:

    • 按值传参
    • 引用传参
  • 栗子:

$a=10;
$b=11;

//按值传参
function f1($a=2,$b=3){
    $a=$a+1;
    $b=$b+1;
    echo $a.','.$b.'
'; } /*按值穿参,不会改变外部变量*/ f1($a,$b); //11,12 echo $a.','.$b.'
'; //10,11 f1($a,$b); //11,12 //用&方式,表示引用传参 function f2($a=3,&$b=4){ $a=$a+1; $b=$b+1; echo $a.','.$b.'
'; } /*按值穿参,不会改变外部变量*/ f2($a,$b); //11,12 echo $a.','.$b.'
'; //10,12 f2($a,$b); //11,13
  • 特点:
    • 参数可以有默认值,默认值必须是常量表达式(标量类型),不能是诸如变量,类成员,或者函数调用等
    • php函数支持可变数量的参数列表

二、函数的特性

  • 函数名命名与变量、常量命名规范相同
  • 函数名不区分大小写
  • 函数名必须是唯一的
  • 函数不会自己发挥作用,只有在调用的时候才会执行并发挥作用
  • 函数可以有返回值,但只能有一个返回值,返回值可以是任何php支持的数据类型
  • php支持可变函数,他的实质就是可变变量

三、函数的动态调用(可变变量的实质)

/*函数动态调用*/
function t(){
    return 'test';
}
$str="t";
echo $str();    // $str()  等价于  t()

/*可变变量*/
$h="hello";
$hello="hello world";
echo $$h;   // $$h  等价于  $($h)  等价于  $hello  等价于  "hello world"

四、函数内的局部变量

  • 函数内的变量有两种,以下两种变量仅在函数内有效:
    • 局部变量(local):函数内部声明的变量
    • 局部静态变量(static):函数内部使用关键字static声明的变量。静态变量的值不能是表达式的值,只能是标量值
  • 变量知识补充:
    • 全局变量(global):在全局声明的变量,全局有效
    • 变量的销毁和检测
  • 栗子:
$a=10;
function f1($a=123){
    echo $a;        //123
    $a++;
    echo $a;        //124
    global $a;      //指定函数内变量使用的是全局变量
    $a++;
    echo $a;        //11
}
echo $a;        //10
f1();
echo $a;        //11


function f2(){
    $a=100;                     //普通局部变量在每次函数被调用时都会被初始化
    static $num=100;            //静态局部变量,它的值只能是标量值,在函数首次被调用时被初始化
    $a++;
    $num++;
    echo $a,$num;
}
/*静态局部变量所做的静态计数器*/
f2();                //101  101
f2();                //101  102
f2();                //101  103

五、函数和业务代码分离(包含文件)

  • 函数抽离成单独文件:
  • 四种引入方式:
    • include:
      • 如果引入文件有错误,代码尽可能的往下执行
    • require:如果引入文件有错误,代码立即终止执行
    • include_once:
      • 只会引入一次,如果在此之前已经引用过则不会再次引入
    • require_once

你可能感兴趣的:(PHP基础-自定义函数)