版权声明:本文为博主原创文章,仅供学习交流,未经博主允许不得转载。 https://blog.csdn.net/zjy_android_blog/article/details/82985744
一、用回调方式调用对象或类的方法
<?php
// call_user_func_array() 自定义回调函数的函数
// 它提供了另外一种调用函数的解决方案
class demo{
static function func1($lang){
return '我是'.$lang.'语言攻城狮!';
}
public function func2($lang){
return '我是'.$lang.'语言攻城狮!';
}
}
echo call_user_func_array(['demo','func1'],['php']);
echo '<hr>';
echo call_user_func_array([new demo(),'func2'],['javascript']);
?>
二、外部函数文件导入与文件包含:include和require的使用
include适用于条件引入,require在开头引入
// temp1.php
<?php
function showMessage1(){
echo 'require引入文件';
}
?>
// temp2.php
<?php
function showMessage2(){
echo 'include引入文件';
}
?>
// include.php
<?php
// require 'temp1.php';
require_once 'temp1.php'; // 文件只引入一次
showMessage1();
echo '<hr>';
$switchTab = true; // false
if($switchTab){
// include 'temp2.php';
include_once 'temp2.php'; // 文件只引入一次
showMessage2();
}else{
echo '没有使用include引入文件';
}
?>
注意:使用include引入文件失败,程序不会停止,但是会有警告;使用require引入文件失败,程序会报错停止.
三、匿名函数与闭包的实现:函数表达式与闭包的原理
<?php
// 1.匿名函数:没有名称,或者名称可以动态设置的函数
// 创建一个匿名函数
$showMessage = function($lang){
echo '我是'.$lang.'程序员';
};// 这是个语句,结束必须加分号
// 调用匿名函数
$showMessage('php ');
echo '<hr>';
// 2.闭包:在一个函数内引入一个匿名函数,就构成闭包(闭包是一个匿名函数在另外一个函数中被创建时的作用域)
function run($distance){
$unit = '公里';
$over = '.';
$args = get_defined_vars();// 可以使用get_defined_vars返回由所有已定义变量所组成的数组
// $do = function ($distance) use ($args) {
$do = function ($distance) use ($unit,$over) {// 在匿名函数中访问外部变量使用use关键字
// print_r($args);
// return '我跑了'.$distance.$args['unit'].$args['over'];
return '我跑了'.$distance.$unit.$over;
};
return $do($distance);
}
echo run(20);
echo '<hr>';
// 使用闭包实现递增
function selfAdd($n){
$num = 1;
$add = function () use (&$num){
return $num+=1;
};
// echo $add(); // 1
// echo '<br>';
// echo $add(); // 2
// echo '<br>';
// echo $add(); // 3
$str = '';
$sum = 0;
while($num<=$n){
$str = $str.'+'.$num;
$sum += $num;
$num++;
}
$str = substr($str,1);
echo $str.' = '.$sum;
}
echo selfAdd(10);
?>
四、函数创建与调用
<?php
// 1.用function关键字创建,按名称调用,最直接和最普通的方式
echo '1.用function关键字创建,按名称调用:';
function func1($x,$y){ return $x.'+'.$y.'='.($x+$y); }
echo func1(1,2);
echo '<hr>';
// 2.用内置函数create_function()来创建
echo '2.用内置函数create_function()来创建:';
$func2 = create_function('$x,$y', 'return $x.\'+\'.$y.\'=\'.($x+$y);');
echo $func2(2,3);
echo '<hr>';
// 3.用function创建一个匿名函数
echo '3.用function创建一个匿名函数:';
$func3 = function($x,$y){ return $x.'+'.$y.'='.($x+$y); };
echo $func3(3,4);
echo '<hr>';
// 4.用function创建一个自执行函数
echo '4.用function创建一个自执行函数:';
echo (function($x,$y){ return $x.'+'.$y.'='.($x+$y); })(4,5);
?>