[源码下载]

速战速决 (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
[源码下载]

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数的更多相关文章

  1. C#多线程函数如何传参数和返回值

          详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统.   C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...

  2. Python基础学习----参数和返回值

    # 函数的参数和返回值 # 4种组合方式 # 1.无参无返 # def methodone(): # 2.无参有返 def methodtwo(): a=10 return a # 3.有参无返 # ...

  3. STL算法设计理念 - 函数对象和函数对象当参数和返回值

    函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)&qu ...

  4. 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)

    获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...

  5. 【python】-- 函数非固定参数,返回值(return)

    函数非固定参数 1.默认参数: 代码如下: def information_register(name,age,country,sex): print("----注册信息------&quo ...

  6. python笔记六(函数的参数、返回值)

    一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...

  7. C#秘密武器之多线程——参数与返回值

    线程函数要么没有参数,要么只能有一个object参数,而且均没有返回值,这样就大大降低了程序的灵活性,其实我们想要的是能像普通方法一样正常使用参数和返回值!能不能实现这个需求呢?下面就介绍两种方法 一 ...

  8. JS基础研语法---函数基础总结---定义、作用、参数、返回值、arguments伪数组、作用域、预解析

    函数: 把一些重复的代码封装在一个地方,在需要的时候直接调用这个地方的代码就可以了 函数作用: 代码重用 函数的参数: 形参:函数定义的时候,函数名字后面的小括号里的变量 实参:函数调用的时候,函数名 ...

  9. JS基础语法---函数---介绍、定义、函数参数、返回值

    函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...

随机推荐

  1. Mybatis入门例子

    Mybatis是轻量级的持久化框架,的确上手非常快. Mybatis大体上的思路就是由一个总的config文件配置全局的信息,比如mysql连接信息等.然后再mapper中指定查询的sql,以及参数和 ...

  2. Atitit 编程语言常用算法attilax总结

    Atitit 编程语言常用算法attilax总结 1. 编译算法分类and   数据操作算法.1 1.1. Tab driver stat  状态转换表格算法1 1.2. Nest case 词法分析 ...

  3. Atitit  基于meta的orm,提升加速数据库相关应用的开发

    Atitit  基于meta的orm,提升加速数据库相关应用的开发 1.1. Overview概论1 1.2. Function & Feature功能特性1 1.2.1. meta api2 ...

  4. 敏捷数据科学:用Hadoop创建数据分析应用

    敏捷数据科学:用Hadoop创建数据分析应用(数据分析最佳实践入门敏捷大数据首作分步骤|全流程演示思路.工具与方法) [美]Russell Jurney(拉塞尔·朱尔尼) 著   冯文中 朱洪波 译 ...

  5. IOS笔记045-UIDatePicker和UIPickerView

    这是两种可以上下滚动的控件. 这是UIDatePicker,可以显示日期和时间. 这个是UIPickerView,显示类似几个选择项的界面. 注意点:PickerView的高度不能改,默认162,Pi ...

  6. IOS开发之控件篇UINavigationController第一章 - 介绍

    UINavigationController是一个比较常见的控件,它连接个视图,例如一个视图走到另外一个视图,之间的联系都可以用这个NavigationController的方法 一般都会由两个部分组 ...

  7. CentOS 下运维自动化 Shell 脚本之 expect

    CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...

  8. hdu4750Count The Pairs(最小生成树找瓶颈边)

    /* 题意:就是给你一个图,图的每两个点都有多条路径,每一条路径中都有一条最大边, 所有最大边的最小边(也就是瓶颈边)就是这两点之间的val值!然后给你一个值f, 问有多少个顶点对的val>=f ...

  9. 《HelloGitHub月刊》第04期(秋招临近,本期加入了面试相关的项目)

    兴趣是最好的老师,而<HelloGitHub> 就是帮你找到兴趣! 因为我比较熟悉python语言,所以月刊中python语言的项目居多,个人能力有限,其他语言涉及甚少,欢迎各路人士加入, ...

  10. OkHttp,Retrofit 1.x - 2.x 基本使用

    Square 为广大开发者奉献了OkHttp,Retrofit1.x,Retrofit2.x,运用比较广泛,这三个工具有很多相似之处,初学者可能会有一些使用迷惑.这里来总结一下它们的一些基本使用和一些 ...