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
织梦模板标记简介
Mar 11 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
Oct 23 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
php实现图片按比例截取的方法
Feb 06 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 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
咖啡的传说和历史
2021/03/03 新手入门
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
python自动化发送邮件实例讲解
2021/01/04 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
化学学院毕业生自荐信范文
2013/12/17 职场文书
最热门的自我评价
2013/12/30 职场文书
党员评议个人总结
2014/10/20 职场文书
导游词格式
2015/02/13 职场文书
教师听课学习心得体会
2016/01/15 职场文书
六年级数学教学反思
2016/02/16 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
Python下opencv库的安装过程及问题汇总
2021/06/11 Python
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
Golang gRPC HTTP协议转换示例
2022/06/16 Golang