支持可变函数调用的php函数,可变函数 - PHP 7 中文文档

2023-11-12

可变函数

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP

将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

可变函数不能用于例如

[echo](php7/function.echo),[print](php7/function.print),[unset()](php7/function.unset),[isset()](php7/function.isset),[empty()](php7/function.empty),[include](php7/function.include),[require](php7/function.require)

以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。

Example #1 可变函数示例

function foo() {

echo "In foo()
\n";

}

function bar($arg = '') {

echo "In bar(); argument was '$arg'.
\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 可变方法范例

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()

?>

当调用静态方法时,函数调用要比静态属性优先:

Example #3 Variable 方法和静态属性示例

class Foo

{

static $variable = 'static property';

static function Variable()

{

echo 'Method Variable called';

}

}

echo Foo::$variable; // This prints 'static property'. It does need a $variable in this scope.

$variable = "Variable";

Foo::$variable(); // This calls $foo->Variable() reading $variable in this scope.

?>

As of PHP 5.4.0, you can call any [callable](php7/language.types.callable) stored in a variable.

Example #4 Complex callables

class Foo

{

static function bar()

{

echo "bar\n";

}

function baz()

{

echo "baz\n";

}

}

$func = array("Foo", "bar");

$func(); // prints "bar"

$func = array(new Foo, "baz");

$func(); // prints "baz"

$func = "Foo::bar";

$func(); // prints "bar" as of PHP 7.0.0; prior, it raised a fatal error

?>

参见 [is_callable()](php7/function.is-callable),[call_user_func()](php7/function.call-user-func),[可变变量](php7/language.variables.variable)和

[function_exists()](php7/function.function-exists)。

更新日志

版本

说明

7.0.0

'ClassName::methodName' is allowed as variable function.

5.4.0

Arrays, which are valid callables, are allowed as variable functions.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

支持可变函数调用的php函数,可变函数 - PHP 7 中文文档 的相关文章

  • UVM基础-m_sequencer和p_sequencer

    一 Sequencer问题的由来 1 1 sequence与sequencer之间的数据交互 在UVM的sequence机制中 sequence其实是独立与验证环境之外的部件 作为uvm object而存在 那么sequence最终是要在某
  • VSAN故障案例分享——超经典三场景

    前言 虽然个人认为现VSAN的常规运维都已经很成熟便捷了 像磁盘更换 但还是有诸多需要注意的地方 近期又突然跟VSAN项目有了一些交集 整理原有资料时 发现有几个不错的案例 故拿出来出大家分享下 如有不足之处 也希望大佬们帮指正
  • 基于双向门控循环单元(BIGRU)的数据分类预测。matlab代码,要求2020及以上版本。多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序可出分类效果图,迭代

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 读取数据 res xlsread 数据集 xlsx 分析数据 num class length unique
  • FreeRtos移植到stm32

    每次都忘记怎么移植 还是在此记录下来比较好 1 打开官网FreeRTOS Free RTOS Source Code Downloads the official FreeRTOS zip file release download2 下载
  • 【安装部署】Mysql下载及其安装的详细步骤

    1 下载压缩包 官网地址 www mysql com 2 环境配置 1 先解压压缩包 2 配置环境变量 添加环境变量 我的电脑 gt 属性 gt 高级 gt 环境变量 gt 系统变量 gt path 3 在mysql安装目录下新建my in
  • 如何处理海量数据文件以及大文件数据查找

    目录 一 处理海量整数文件 问 假定有40亿个无符号整数 判断某数据是否在其中 问 假定有40亿个无符号整数 找到只出现一次的数据 两次 三次 问 两个文件各有100亿个整数 只有1G内存 找交集整数 二 处理海量数据 非整数 文件 问 超
  • matlab算出中心差分方法_美赛准备第12期丨美赛ABCDEF题型分析与建模方法

    美赛还有十多天的时间就正式开始了 参赛的小伙伴准备好咯吗 美国大学生数学建模竞赛有MCM和ICM MCM Mathematical Contest in Modeling 为数学建模竞赛 ICM The Interdisciplinary
  • 微信的信息会保存在苹果服务器上吗,【每日一技】如何将微信文件保存到 iPhone 里?...

    由于 iOS 系统的封闭性 在 iPhone 本地储存文件一直是一件麻烦事 特别是在微信内收到很多文件之后 分类管理更加不便 如果长时间未操作 文件还可能永久失效 今天小编图文详解 如何解决 iOS 存储文件问题以及如何在 iOS 内找到文
  • 透明网关

    Oracle与SQL Server的互连 不同数据库平台的互连一般称之为数据库的异构服务 现在各大数据库之间都可以实现这样的异构互连 只是各厂商的具体实现技术不一样 如 在SQL SERVER里面叫做LINKED SERVER 通过ODBC
  • 人工智能从头学(一)

    人工智能从头学 一 Python基础 本系列是对人工智能学习之路的一次复现与总结 适合期末突击复习概念知识点 回顾人工智能知识体系等场景 本文对纯小白极不友好 至少至少对计算机方向有个大概的了解 如有纰漏 欢迎指正 暂定计划 Python基
  • centos7 使用libvirt创建kvm虚拟机并vnc连接

    文章目录 环境 安装libvirt 查看libvirt的一些默认配置 查看libvirt的默认网络配置 kvm虚拟机搭建与连接 创建虚拟机 创建磁盘 下载镜像 使用libvirt创建kvm虚拟机 libvirt常用参数 创建kvm常用指令
  • android上实现Table

    package com android import java util ArrayList import java util HashMap import java util List import java util Map impor
  • 机器学习(十八) 方差、标准差、协方差、协方差矩阵、相关系数

    实例计算 学习数学理论发现还是懂了理论自己算一算 印象才深刻 记忆才清晰 并且在整理计算过程中会使得想法进一步加深 挖掘出来表面想象够不到的地方 先来看看统计学定义 大意是通过各种研究方法研究某一现象的内在规律 促进科学发展 统计学 统计学
  • Python 编写shell脚本

    详细讲解 shell中常用的是ls命令 python的写法是 os listdir dirname 这个函数返回字符串列表 里面是所有的文件名 不过不包含 和 os listdir python 把当前工作目录切换到dirname下 os
  • 30天学习之-自动化测试

    30天学习之 自动化测试 工具类实现自动化测试 1 postman自动化测试 1 postman Tests下写脚本 2 newman生成postman的测试报告 2 Jmter 基本操作 jmter基本元件 切换中文简体 登陆请求界面 自
  • 【精】与HDFS相关的Linux基础知识:内核是怎么保存文件描述符相关数据结构的?

    研究分布式文件存储系统 少不了与底层操作系统 文件系统 存储设备等打交道 了解这些基本原理对我们全方位理解分布式存储 问题定位 性能优化等有很大帮助 大家都知道 在linux中 一切都是文件 对文件的操作都是通过打开此文件拿到文件描述符 然
  • 数字大写

    人民币大写数字注意事项 中文大写金额数字应用正楷或行书填写 如壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万 亿 元 角 分 零 整 正 等字样 不得用一 二 两 三 四 五 六 七 八 九 十 廿 毛 另 或0 填写 不得自造简化字
  • OpenCV支持中文字符输出实现

    在 http www opencv org cn forum php mod viewthread tid 2083 extra page 1 中 作者给出了原始的在OpenCV中 支持中文字符的输入 原始的实现使用的是OpenCV的C接口
  • Win32API学习笔记第三章

    这次记录的是鼠标与键盘的消息和部分相应API的使用如与标准 本人学的是Win程序设计第五版 有偏差 或哪里有不妥 欢迎大家给予斧正 一 键盘 初阶 Windows有8种不同的消息来传递不同的键盘事件 但是其中的大部分是我们一般不会去处理的

随机推荐

  • 有哪些好用的App云测试平台?

    一 国内外6种好用app云测平台推荐 章节末附pk图 1 国内云测平台 1 Testin云测 网址 https www testin cn Testin云测平台是一款基于云端的移动应用测试平台 为移动应用开发者和测试人员提供一站式的移动应用
  • 永久关闭!

    永久关闭
  • 操作系统 -- CPU的调度策略 CPU Scheduling

    操作系统 CPU的调度策略 CPU Scheduling 进程状态 preemptive and non preemptive Scheduler解决的三个问题 什么时候切换进程 When 怎么将进程和CPU绑定 How 怎么选择需要执行的
  • 在Web上运行Linux

    原文地址 http coolshell cn articles 4722 html more 4722 一个叫Fabrice Bellard的程序员写了一段Javascript在Web浏览器中启动Linux 原网页 我把这个网页iframe
  • Laya页面嵌套和Scene.destory导致的Bug

    Laya2 1 1 1 参考 预设使用 Laya给出了相同模块 逻辑代码也相同情况下 使用页面嵌 runtime的使用方案 但是该方案和Laya Scene open Laya Scene destroy等有冲突 会导致bug 当参考使用L
  • QT如何获取QListWidget的Scroll值

    你可以使用 QListWidget 的 verticalScrollBar 方法来获取一个指向该 QListWidget 的垂直滚动条的指针 然后 你可以使用这个滚动条的 value 方法来获取滚动条的当前值 例如 QListWidget
  • LeetCode刷题记录

    目录 1 数组中重复的数字 本题考验沟通 1 原地置换法 2 哈希表 Set 2 二维数组中的查找 1 暴力法 双for 2 线性查找 3 替换空格 1 字符数组 2 Java自带方法 4 从尾到头打印链表 1 递归法 附加练习 链表 5
  • cytoscape使用方法_APT干货

    中科新生命 成立于2004年 专注于质谱技术方法在科技服务 生物医药 精准医疗领域的应用开发 12年质谱服务经验 每年处理本数超万例 通过与中科院的技术合作及企业研发团队的自主创新 致力成为您优秀的生物技术合作伙伴 每日关键点 Cytosc
  • .NET Core:搭建私有Nuget服务器以及打包发布Nuget包

    使用docker搭建私有Nuget服务器 docker run d p 8080 80 v PWD nuget db var www db v PWD nuget packages var www packagefiles e NUGET
  • 【转】八大排序算法总结

    插入排序 1 直接插入排序 原理 将数组分为无序区和有序区两个区 然后不断将无序区的第一个元素按大小顺序插入到有序区中去 最终将所有无序区元素都移动到有序区完成排序 要点 设立哨兵 作为临时存储和判断数组边界之用 实现 Void Inser
  • BUAAOS-Lab0实验报告

    LAB0 初始操作系统 一 Note Exercise Thinking Exercise 0 1 echo bash ls Thinking 0 1 Shell简析 Exercise 0 2 gt gt gt Thinking 0 2 文
  • 微信公众平台开放 9 大高级接口,它有什么意义?

    微信的野心大大的 看看它的9大新接口吧 转自 http www ifanr com 366010 微信刚刚更新公众平台 向服务号开放微信认证 开放 9 大高级接口 增加开发者问答系统 并对微信公众平台的后台管理界面进行改版 其中最受关注的是
  • vmware安装redhat 9

    vmware安装redhat 9 1 镜像文件下载 1 1 镜像文件 2 安装系统 2 1 安装时语言 2 2 安装选项设置 2 2 1 手动磁盘分区 2 2 2 设置root密码 允许通过ssh使用密码方式登录root 2 3 开始安装系
  • 最实用的应急响应笔记思路小结

    0x00 事件应急响应的流程分析 事件整个类型大致归类于 事件表现 信息收集 确认攻击类型 事件追查 修复 1 事件的表现 网站类型 被篡改 信息丢失 乱码等 文件类型 被篡改 丢失 泄露等 系统类型 系统卡顿 CPU爆满 服务宕机等 流量
  • 普通大学生如何拿到大厂offer?敖丙教你一招致胜!

    提到敖丙 大家应该并不陌生 三太子敖丙 CSDN博客大V 时年24岁 曾供职于阿里巴巴 蘑菇街等大厂 专注于Java后端研发领域 公众号 三太子敖丙 主理人 敖丙虽然才24岁 但已有五年的职场经验 并且这五年的职场打拼已帮助其实现了财富自由
  • 最新人机对话工具:GPT4介绍(ChatGPT升级版 支持图片且更智能)

    这里写自定义目录标题 显著提升特点 介绍 能力对比 考试能力 知识水平 语言能力 视觉能力 使用方法指南 今天偶然发现期待已久的GPT 4发布了 比上一版的ChatGPT GPT 3 5 性能还好 最主要是支持图片输入 就增加了很多新的场景
  • LeetCode 每日一题 2022_list

    网页链接 LeetCode 坚持住 小镁铝 2022年1月每日一题记录
  • Zabbix--部署--03--proxy安装--6.0

    Zabbix 部署 03 proxy安装 6 0 1 介绍 1 1 官方安装文档 https www zabbix com cn download 1 2 环境介绍 操作系统 centos7 zabbix版本 6 0 LTS 2 准备工作
  • 循环中调用异步接口获取数据

    前言 遇到这样一个需求 调用接口 返回一个新闻列表 再循环这个新闻列表 用每个新闻的id异步请求这个新闻的视频地址 这就需要在循环里调用接口 如果用for循环 接口还没请求完成 for循环就已经执行完了 所以改成promise去处理 开始
  • 支持可变函数调用的php函数,可变函数 - PHP 7 中文文档

    可变函数 PHP 支持可变函数的概念 这意味着如果一个变量名后有圆括号 PHP 将寻找与变量的值同名的函数 并且尝试执行它 可变函数可以用来实现包括回调函数 函数表在内的一些用途 可变函数不能用于例如 echo php7 function