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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
Views rows style模板重写代码
May 16 PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 PHP
memcache命令启动参数中文解释
Jan 13 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
php防止sql注入简单分析
Mar 18 PHP
php将金额数字转化为中文大写
Jul 09 PHP
使用PHP如何实现高效安全的ftp服务器(一)
Dec 20 PHP
php图片添加水印例子
Jul 20 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
PHP 模拟登陆功能实例详解
Sep 10 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生成文件
2007/01/15 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
nginx下安装php7+php5
2016/07/31 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
详解React中的组件通信问题
2017/07/31 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
简单介绍Python中的floor()方法
2015/05/15 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
python实现指定ip端口扫描方式
2019/12/17 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
彩妆大赛策划方案
2014/05/13 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
2022年显卡天梯图(6月更新)
2022/06/17 数码科技