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 相关文章推荐
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
asp.net和php的区别点总结
Oct 10 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
js实现省市级联效果分享
2017/08/10 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Django分组聚合查询实例分享
2020/04/29 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
测量实习生自我鉴定
2013/09/19 职场文书
有针对性的求职自荐信
2013/11/14 职场文书
小学生学习感言
2014/03/10 职场文书
会计试用期自我评价
2014/09/19 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
认真学习保证书
2015/02/26 职场文书
具结保证书范本
2015/05/11 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
德劲DE1108畅想
2021/04/22 无线电
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js