复杂函数

可变函数:

php支持可变函数的概念,这意味着如果一个变量名后面有圆括号,php将寻找与变量的值相同的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

可变函数不能用于例如echo print unset() isset() empty() include,require以及类似的语言结构,需要使用自己包装函数来将这些结构用作可变函数。

 

class Foo{

 function test(){
    $name = "say";
    $this->$name();

}
function say(){
  echo "this is class foo function say";

}

}
$foo = new Foo();
$funcName = "test";
$foo->$funcName();

嵌套函数:

当外部的函数被调用的时候,内部的函数就会自动进入全局域中,成为新的定义函数

function out(){
    if(! function_exists("in")){
       function in(){
      echo "如果外面的函数没有被调用的话,我是不存在的";
}
}  


}
out();
in();

  

递归函数

函数在它的函数体内调用它自身,这种函数成为递归函数

<?php
function recursive($i){
    $sum = 1;
    echo "当前recursive()函数调用\$i的值是 {$i}\n";
    if($i == 1){
       echo "当前\$i的值是 {$i} \$sum = {$sum}\n";
       return 1;
    }else{
       $sum = $i * recursive($i-1);
    }
    echo "\$i = {$i};\$sum = {$sum};\n";
    return $sum;
}
echo recursive(3);

  匿名函数/闭包函数

匿名函数(Anonymous functions),也叫闭包函数(closures),允许临时创建一个没有

指定名称的函数,最常用作回调函数(callback)参数的值。

匿名函数目前是通过Closure类来实现的

  

<?php


     function test_closure($name,Closure $clo){
         echo "hello {$name}\n";
         $clo();
     };
     test_closure("xiaowang",function(){
         echo "welcome to this page";
     });

  

 

posted @ 2019-05-27 21:55  X__cicada  阅读(566)  评论(0编辑  收藏  举报