PHP可变函数的使用详解


Posted in PHP onJune 14, 2013

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
变量函数不能用于语言结构,例如 echo() ,print() ,unset() ,isset() ,empty() ,include() ,require() 以及类似的语句。需要使用自己的包装函数来将这些结构用作变量函数。 
Example #1 可变函数示例

<?php
function  foo () {
    echo  "In foo()<br />/n" ;
}
function  bar ( $arg  =  '' ) {
    echo  "In bar(); argument was ' $arg '.<br />/n" ;
}
// 使用 echo 的包装函数
function  echoit ( $string )
{
    echo  $string ;
}
$func  =  'foo' ;
$func ();         // This calls foo()
$func  =  'bar' ;
$func ( 'test' );   // This calls bar()
$func  =  'echoit' ;
$func ( 'test' );   // This calls echoit()
?> 
还可以利用可变函数的特性来调用一个对象的方法。

Example #2 可变方法范例
<?php
class  Foo
{
    function  Variable ()
    {
         $name  =  'Bar' ;
         $this -> $name ();  // This calls the Bar() method
     }
    function  Bar ()
    {
        echo  "This is Bar" ;
    }
}
$foo  = new  Foo ();
$funcname  =  "Variable" ;
$foo -> $funcname ();    // This calls $foo->Variable()
?>

PHP 相关文章推荐
php 验证码制作(网树注释思想)
Jul 20 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
php中define用法实例
Jul 30 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
关于Laravel Route重定向的一个注意点
Jan 16 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 #PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 #PHP
利用curl 多线程 模拟 并发的详解
Jun 14 #PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 #PHP
与文件上传有关的php配置参数总结
Jun 14 #PHP
解决File size limit exceeded 错误的方法
Jun 14 #PHP
使用PHP计算两个路径的相对路径
Jun 14 #PHP
You might like
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
PHP中header用法小结
2016/05/23 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python中正则表达式的详细教程
2015/04/30 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
应届生服务员求职信
2013/10/31 职场文书
自考生自我评价分享
2014/01/18 职场文书
文明上网主题班会
2015/08/14 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android