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之第四天
Oct 09 PHP
说明的比较细的php 正则学习实例
Jul 30 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 PHP
php检测url是否存在的方法
Apr 14 PHP
php支持断点续传、分块下载的类
May 02 PHP
Smarty分页实现方法完整实例
May 11 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
PHP生成随机数的方法总结
Mar 01 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 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 mssql 数据库分页SQL语句
2008/12/16 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
flexigrid 参数说明
2010/11/23 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
Nuxt配合Node在实际生产中的应用详解
2018/08/07 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python中的getopt函数使用详解
2015/07/28 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python机器学习之神经网络(三)
2017/12/20 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
班风口号
2014/06/18 职场文书
医者仁心观后感
2015/06/17 职场文书
人代会简报
2015/07/21 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL