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 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
跟我学Laravel之路由
Oct 15 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
浅谈PHP中关于foreach使用引用变量的坑
Nov 14 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
利用PHPStorm如何开发Laravel应用详解
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
关于PHP实现异步操作的研究
2013/02/03 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Python用input输入列表的实例代码
2020/02/07 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
爽歪歪广告词
2014/03/20 职场文书
协议书范本
2014/04/23 职场文书
文化产业实施方案
2014/06/07 职场文书
离婚协议书格式
2015/01/26 职场文书
收入证明申请书
2015/06/12 职场文书