速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
作者:webabcd
介绍
速战速决 之 PHP
- 函数基础
- 函数参数
- 函数返回值
- 可变函数
- 匿名函数
- 闭包函数
- 回调函数
示例
1、函数的相关知识点 1(基础)
function/function1.php
<?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用 f2() 就错误了 // f2(); $b = true; if ($b) { function f2() // 条件成立才会声明此函数 { echo "f2"; echo "<br />"; } } f2(); // 这里调用 f4() 就错误了(因为 f4 的声明是在 f3 的内部,所以要先调用 f3 才能再调用 f4) // f4(); f3(); f4(); function f3() { echo "f3"; echo "<br />"; function f4() { echo "f4"; echo "<br />"; } }
2、函数的相关知识点 2(函数参数)
function/function2.php
<?php /** * 函数的相关知识点 2(函数参数) */ // 带参数的函数 f1("webabcd"); function f1($name) { echo "hello " . $name; // output: hello webabcd echo "<br />"; } // 带参数的函数(参数是引用类型) $name = "webabcd"; f2($name); function f2(&$n) // 参数是引用类型 { echo "hello " . $n; // output: hello webabcd echo "<br />"; $n = "wanglei"; // $n 是引用类型,其与全局变量 $name 指向的内容是一样的 } echo "hello " . $name; // output: hello wanglei echo "<br />"; // 带参数的函数(参数可以指定默认值) f3("hello "); // output: hello webabcd f3("hello ", "wanglei"); // output: hello wanglei function f3($p1, $p2 = "webabcd") // 参数的默认值只能是常量,不能是表达式 { echo $p1 . $p2; echo "<br />"; }
3、函数的相关知识点 3(函数返回值)
function/function3.php
<?php /** * 函数的相关知识点 3(函数返回值) */ // 带返回值的函数 $result1 = f1("webabcd"); echo $result1; echo "<br />"; function f1($name) { return "hello " . $name; // output: hello webabcd } // 从函数返回以一个引用(函数的声明和调用都要加 &) $result2 = &f2(); echo $result2; // output: 1 echo "<br />"; $result2 = 100; // $result2 是个引用,指向 $i 所指向的内容,所以此句之后 $i 的值为 100 $result3 = &f2(); echo $result3; // output: 101 echo "<br />"; function &f2() // 此函数会返回一个引用(函数的声明和调用都要加 &) { static $i = 0; $i ++; return $i; }
4、函数的相关知识点 4(可变函数,匿名函数,闭包函数)
function/function4.php
<?php /** * 函数的相关知识点 4(可变函数,匿名函数,闭包函数) */ // variable function(可变函数),将变量的值作为函数名 function f1() { echo "f1"; // output: f1 echo "<br />"; } function f2() { echo "f2"; // output: f2 echo "<br />"; } $func = 'f1'; $func(); $func = 'f2'; $func(); // 匿名函数 echo preg_replace_callback // output: userName ( '~-([a-z])~', function ($match) // 匿名函数 { return strtoupper($match[1]); }, 'user-name' ); // 闭包函数 // $f3("webabcd"); // 这是错误的,对于闭包函数来说,调用时要在声明语句的后面 $f3 = function($name) { echo "hello " . $name; // output: hello webabcd echo "<br />"; }; // 别忘了闭包函数的“;” $f3("webabcd");
5、函数的相关知识点 5(回调函数)
function/function5.php
<?php /** * 函数的相关知识点 5(回调函数) */ // 用于演示如何回调(callback)函数 function myCallbackFunction() { return 'myCallbackFunction'; } class MyClass1 { // 用于演示如何回调(callback)实例方法 public function myMethod1() { echo 'MyClass1 myMethod1'; echo '<br />'; } // 用于演示如何回调(callback)类方法 public static function myMethod2() { echo 'MyClass1 myMethod2'; echo '<br />'; } } // 通过 call_user_func 调用指定的函数 echo call_user_func('myCallbackFunction'); echo '<br />'; $obj1 = new MyClass1(); // 通过 call_user_func 调用指定对象的指定方法 call_user_func(array($obj1, 'myMethod1')); // 通过 call_user_func 调用指类的类方法 call_user_func(array('MyClass1', 'myMethod2')); // 通过 call_user_func 调用指类的类方法(PHP 5.2.3 或以上) call_user_func('MyClass1::myMethod2');
OK
[源码下载]