太原PHP培训
达内太原php培训中心

0351-5608878

热门课程

前端与PHP之间的秘密(二)

  • 时间:2016-11-11
  • 发布:博客园-原创精华区
  • 来源:博客园-原创精华区

前端与PHP之间的秘密(二)

继续前面的话题,PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。本文将详细介绍php函数。

回调函数

回调函数是指将一个函数的函数名作为参数传到另一个函数中,这个函数被称为回调函数

function demo($num,$n){

for($i=0;$i<$num;$i++){

if($n($i)){

echo $i.'

';

}

}

}

function test($i){

if($i%5){

return true;

}

}

demo(20,'test');

call_user_func_array

使用call_user_func_array可以调用回调函数,并把一个数组参数作为回调函数的参数

mixed call_user_func_array ( callable $callback , array $param_arr )

把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入

function demo($num,$n){

for($i=0;$i<$num;$i++){

if(call_user_func_array($n,array($i))){

echo $i.'

';

}

}

}

function test($i){

if($i%5){

return true;

}

}

demo(20,'test');

实现回调函数时,通常要使用call_user_func_array()函数,而不是变量函数,因为变量函数无法传递对象中的方法或和类中的静态方法

function demo($num, $n) {

for($i=0; $i<$num; $i++) {

if(call_user_func_array($n, array($i))){

echo $i."

";

}

}

}

class Filter {

function one($i) {

if($i%3==0) {

return true;

}

}

static function two($i) {

if(preg_match('/3/', $i)) {

return true;

}

}

}

demo(500, array(new Filter(), "one"));

demo(500, array("Filter", "two"));

递归函数

在函数中调用自己就是递归函数

function test( $n ) {

echo $n;

if($n>0){

test($n-1);

}

echo $n;

}

test(5);//543210012345

?>

加载函数库

使用include()函数来引入外部文件

test.php

function one(){

echo '111';

}

include ('test.php');

one();//111

?>

但如果不慎引入多次,使得函数重定义,变量重新赋值,会造成错误

test.php

function one(){

echo '111';

}

include ('test.php');

include ('test.php');

one();//111

?>

此时,需要使用include_once()函数,来保证相同的文件只被引入一次

test.php

function one(){

echo '111';

}

include_once('test.php');

include_once('test.php');

one();//111

?>

require()

引入外部文件,还可以使用require()include( )require( )几乎等价,区别在于在脚本执行时包含,当处理失败时,include( )产生一个警告而require( )则导致一个致命错误

[注意]require_once()include()_once也类似

匿名函数

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值

其实,php的匿名函数类似于javascript中的函数表达式

[注意]匿名函数结尾一定要加分号,否则会报错

$greet = function($name)

{

printf("Hello %s\r\n", $name);

};

$greet('World');

$greet('PHP');

?>

闭包

PHP闭包实现主要就是靠匿名函数

将匿名函数在普通函数中当做参数传入,也可以被返回。这就实现了一个简单的闭包。

闭包的两个特点:

1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。

2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

其实上面两点可以合成一点,就是闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区依然保留

闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去

$message = 'hello';

$example = function () use ($message) {

var_dump($message);

};

echo $example();//string 'hello' (length=5)

好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

上一篇:前端与PHP之间的秘密(一)
下一篇:那些年走过的大坑

太原php培训资源站

太原PHP编程开发并发编程槽与坑

Php开发规划自己的路

太原php培训老生常谈php

选择城市和中心
贵州省

广西省

海南省

台湾