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 相关文章推荐
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
php断点续传之如何分割合并文件
Mar 22 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
基于laravel Request的所有方法详解
Sep 29 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
PHP与Web页面的交互示例详解一
Aug 04 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 阴历-农历-转换类代码
2012/01/16 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
悬浮数字的实现案例
2014/02/19 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
JS高级运动实例分析
2016/12/20 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python常用算法学习基础教程
2017/04/13 Python
python并发编程之线程实例解析
2017/12/27 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
Numpy掩码式数组详解
2018/04/17 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
python中的decorator的作用详解
2018/07/26 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
UDP协议功能
2013/01/06 面试题
某公司C#程序员面试题笔试题
2014/05/26 面试题
征婚广告词
2014/03/17 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
医院信息公开实施方案
2014/05/09 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Python 键盘事件详解
2021/11/11 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers