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中的时间显示
Jan 18 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
Zend的MVC机制使用分析(二)
May 02 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 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
PHP配置心得包含MYSQL5乱码解决
2006/11/20 PHP
解析PHP生成静态html文件的三种方法
2013/06/18 PHP
php编写简单的文章发布程序
2015/06/18 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
实用求职信范文分享
2013/12/25 职场文书
保密承诺书
2014/03/27 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
初中成绩单评语
2014/12/29 职场文书
征求意见函
2015/06/05 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
Pytorch 如何实现常用正则化
2021/05/27 Python
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android