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 相关文章推荐
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
PHP代码审核的详细介绍
Jun 13 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
php实现Session存储到Redis
Nov 11 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
php编程每天必学之表单验证
Mar 01 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 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优于Node.js的五大理由分享
2012/09/15 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python3 修改默认环境的方法
2019/02/16 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
Python实现石头剪刀布游戏
2021/01/20 Python
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
网络安全方面的面试题
2015/11/04 面试题
公积金单位接收函
2014/01/11 职场文书
地球一小时倡议书
2014/04/15 职场文书
应届生找工作求职信
2014/06/24 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
春晚观后感
2015/06/11 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
Vue h函数的使用详解
2022/02/18 Vue.js
python游戏开发Pygame框架
2022/04/22 Python