PHP函数与变量作用域


1. 函数体、函数作用域、超全局变量

  

   函数的返回值,函数体内的 return语句。

   1,返回值,2,终止执行(终止的函数的执行)

   只要出return 就不会出现执行后面的脚本。 除非在分支结构中的return.


   

一个函数只能有一个返回值:

但是可以有多个return语句。

  

返回值也存在 值传递和引用传递。

默认是值传递。可以使用引用传递:

1, 在定义函数时,告知函数需要返回一个引用。

    function &func(){

        return "";

    }

2.在调用时,在函数前增加引用符号。

      $return = &func();


 

PHP的作用域只有两种

1, 函数外,全局作用域。

2, 函数内,局部作用域。

法则:作用域不重叠。(全局不能访问局部,局部不能访问全局)


但是js是可重叠的。




特殊的:预定义变量(9大超全局数组变量)--注意是数组变量。

超全局:超级全局:既可以在全局使用,也可以在局部使用。所有的作用域都生效。


$_GET['v1'] = "123";

echo $_GET['v1'] 



$GLOBALS 超级全局变量,是专门保存超全局变量的,注意没有下划线。

修改全局变量,会影响GLOBALS内元素的值;

原因:使用的一个数据空间。

相当于:$GLOBALS[‘v8’] = &$v8;





2. create_function --  创建函数的另一方式


  $func = create_function('$p',“echo $p);

   var_dump($func); 返回一个函数名。 


次函数创建出来的函数名 为lambda风格。而且在函数名前有一个 不可见字符。Ascii为0的不可见字符。


也可以调用。 $result = ”\x0“."lamba8"(20); 注意要知道函数名才可调用。

  最常用的地方出现在回调函数内。

因此 create_function所创建的函数,与普通函没有区别(存在函数的三个部分);

 

但是此函数不可以在定以前 调用,因此 只用执行 create_function才能得到该函数。

 

最常用的地方:

在 callback参数上,参数create_function

相当于一个回调结构入参。


 

匿名函数:

匿名函数 创建的函数是没有名的, 而是一个 对象:

与create_function的区别:

匿名函数究竟是什么?

1, 将匿名函数可以当值来看待(php中是对象类型的)

2, Php是通过 类 closure  类来实现匿名函数功能的。每一个匿名函数都是Closure类一个对象。Closure单词的意思是闭包。因此有时php也将 匿名函数称之为 闭包函数。

3, 为什么一个对象可以当函数来调用?(oop)

可以使用 外层作用域的变量的语法:

注意 外层与全局的区别。外层可能是全局,也可能是局部。看当前匿名函数是定义的位置。

 

Use语法默认是值传递,可以引用传递.



Callback

1, 函数名

2, Create_function

3, Function 匿名函数



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值