php函数的种类与调用方法大揭密
PHP中的函数看上去很简单,实际上功能非常强大,我这里按函数名称是否固定,可以分为以下三大类:
一、名称固定的函数:
这类函数,也叫:常规函数,直接用关键字function来创建,也是大家最熟悉的类型,例如:
<?php
//1按名调用:最直接和普通的方式
echo '1.用function关键字创建常规函数,按函数名称调用:<br>';
function add($a, $b){return $a.'+'.$b.'='.($a+$b);};
echo add(5,6);
echo '<hr>';
执行返回:
1.用function关键字创建常规函数,按函数名称调用:
5+6=11
二、名称动态设置的函数:
这类函数有很多种称呼,例如:匿名函数、可变函数、变量函数、闭包函数等,其实都一样的,大家别被名称吓住了。
这种动态设置的函数,是用引用这个函数的变量名来调用,所以非常适合放在回调函数中使用~~
为了教学需要,我这里统称为:匿名函数吧。
匿名函数的创建主要有二种方法,有的教材分开来说了,我这也分开吧。
1、创建方法一:用PHP内置的create_function(参数表,函数体)函数完成,这个函数有二个参数,这二参数必须放在引号中,别问为什么,PHP就是这样规定的,如果不服,那你创造出一个编程语言吧~~
//2.用系统函数create_function()来创建一个匿名函数/可变函数/变量函数/闭包函数
echo '2.用内置create_function()函数创建匿名函数,用变量名调用:<br>';
$func1 = create_function('$a,$b','return $a.\'+\'.$b.\'=\'.($a+$b);');
echo $func1(5,6);
echo '<hr>';
执行返回:
2.用内置create_function()函数创建匿名函数,用变量名调用:
5+6=11
2、创建方法二:用function关键字来创建,创建过程与常规函数一样,不同之处在于,它出现在值的位置上,也就是'='等号的右边。将创建好的函数整体赋给一个变量;
//3匿名函数:也叫闭包函数,将函数做为值赋给一个变量
echo '3.用function关键字创建匿名函数,用变量名调用:<br>';
$func2 = function ($a, $b){return $a.'+'.$b.'='.($a+$b);};
echo $func2(5,6);
echo '<hr>';
执行返回:
3.用function关键字创建匿名函数,用变量名调用:
5+6=11
三、没有函数名称,创建完直接传参调用执行:
这类函数,它也匿名函数很像,但更加的粗暴,创建好直接用括号一包,传上参数就可以调用了,所以这类函数根本不需要名字,属于一次性的函数。就像一次用品,用完就扔掉了。
//4自执行函数:创建完立即执行不必明示调用
echo '4.用function关键字创建匿名函数,然后直接传参调用执行:<br>';
echo (function ($a,$b){return $a.'+'.$b.'='.($a+$b);})(5,6); //自运行的匿名函数
执行返回:
4.用function关键字创建匿名函数,然后直接传参调用执行:
5+6=11
总结(非常重要,不得不看):
php中,函数的使用还是非常灵活的,但不论如何,函数,归根到底,还是一个处理过程。同时,也必须要有一个返回值,才能让用户感知它的存在,也及它的价值!
所以,函数总是当做一个值来使用,因此,不能出现在等号'='的左边,这就是函数与语言结构的最大区别。
例如,我们常说:echo()和list()是一个语言结构,不是一个函数,尽管看上去长得与函数一样,就是因为它们可以放在等号的左边,可以接受赋值。而函数不行。希望这篇文章,让你对函数有更深的理解~~
php函数的种类与调用方法大揭密的更多相关文章
- JavaScript函数的4种调用方法详解
在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造 ...
- JavaScript 函数的4种调用方法
JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...
- JS函数的定义与调用方法
JS函数调用的四种方法:方法调用模式,函数调用模式,构造器调用模式,apply,call调用模式 1.方法调用模式:先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来 ...
- 【转】JS函数的定义与调用方法
JS函数调用的四种方法:方法调用模式,函数调用模式,构造器调用模式,apply,call调用模式 1.方法调用模式:先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来 ...
- ASP程序加密/解密方法大揭密
如今,用ASP技术构建的网站随处可见.由于ASP脚本是在服务器上解释执行的(无法编译),因此你辛苦开发出来的ASP代码,很容易被人拷去任意修改,如何保护ASP源代码呢?这是每个ASP站长都会遇到的 ...
- C#如何用IL和Emit类通过Calli来实现实例函数与静态函数的调用
一. 介绍 最近充能看书,在书上看到函数调用可以 " 通过 ldftn 获得函数指针,然后使用 calli 指令 " 来进行调用,并说这种行为 " 类似 C 的函数指针, ...
- phpcms 的实用相关接口,函数,调用方法
常用函数 , 打开include/global.func.php,下面存放一些公共函数view plaincopy to clipboardprint? strip_tags() 调用内容过滤html ...
- 模式识别 - libsvm该函数的调用方法 详细说明
libsvm该函数的调用方法 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26261173 须要载入(load)SVM ...
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...
随机推荐
- 【学习笔记】TCP通信的细节及TCP连接对HTTP事务处理性能影响
从三次握手的细节说起 刚开始尝试使用java等后端语言写IO流,或用套接字(socket)实现简单C/S通信的同学们,常常会接触到的一个概念:就是所谓的"三次握手",socket作 ...
- 动力IT教育背后的“神秘力量”
IT行业作为当前就业形势最好的行业,成为大多数毕业生以及转行人群的首选.且国家也对互联网大力支持,IT行业市场需求空缺也越来越大,随之IT培训机构也如雨后春笋般,层出不穷. 行业易选,但该如何选择培训 ...
- 强大的版本管理工具 Git
Git 简介 git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 linux 创始人 Linus Torvalds 为了帮助管理 linux 内核开发而开发的一个开 ...
- Centos6.8 安装 nginx
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm ...
- 【原】Linux设备网络硬件管理
遇到网络问题时候,一般情况下,我们第一反应是查找软件方面问题,但排查之后,软件没有问题的时候,我们就需要排查硬件方面工作是否正常. 我们可能需要查询网卡设备本身的状态,查询网卡是否有数据包发送接收: ...
- crontab的定时任务不能自动执行,但是手动执行脚本一直能成功
crontab 问题小记: 环境变量问题, 养成良好的习惯, 在脚本开头export PATH 原因是 crontab 执行定时任务时,用的不是系统环境变量,而是自己的环境变量,可以把 echo $P ...
- python 之栈的实现
#!/usr/bin/env python # --------------------------------------- # author : Geng Jie # email : gengji ...
- Appium和Robotium在文字输入上的区别
Appium和Robotium在文字输入上的区别 Appium和Robotium在对文本框进行输入时有一定的区别: Appium在输入文字时需要调用系统键盘 Robotium在输入文字是根本不需要 ...
- win8如何显示文件后缀名
按快捷键[WIN+X]然后点击[文件资源管理器] 进入我的电脑后点击菜单栏的[查看] 查看下面有一个[文件扩展名]把前面那个勾,勾上就可以显示后缀名了. 同样的道理取消勾就是隐藏后缀名. ...
- Uva 11076 Add Again (数论+组合数学)
题意:给你N个数,求把他们的全排列加和为多少 思路:对于这道题,假设数字k1在第一位,然后求出剩下N-1位的排列数num1,我们就可以知道k1在第一位时 排列有多少种为kind1, 同理,假设数字k2 ...