PHP - 获取函数的所有参数(甚至是可选参数)

2023-12-27

我想从函数中获取所有参数(传递或未传递)。

Example:

<?php
    function foo($a, $b=1)
    {
         return $a-$b;
    }
?>

如果我打电话

$test = func_get_args(foo(10));
var_dump($test);

我只会有一个数组[0] => 10.

即使我没有传递可选参数,我怎样才能获得它的值? (我知道func_get_args只返回传递的参数。)

EDIT:更准确地说,这就是我正在做的事情:

function insertLog($fct_name="-1", $type="-1", $error="-1", ....)
{
     // first thing
     $params = func_get_args();
     var_dump($params);
}

您可以使用以下方法来完成此操作ReflectionFunction https://www.php.net/ReflectionFunction函数类。

function foo($a, $b=1)
{
    $arr = array();
    $ref = new ReflectionFunction(__FUNCTION__);
    foreach($ref->getParameters() as $parameter)
    {
        $name = $parameter->getName();
        $arr[$name] = ${$name};
    }
    print_r($arr);

    // ...
}

调用函数:

foo(1);

Output:

Array
(
    [a] => 1
    [b] => 1
)

Demo https://eval.in/101348

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

PHP - 获取函数的所有参数(甚至是可选参数) 的相关文章

  • 纠正装饰器模式的一个大缺点

    不久前 我在重构一些游戏战斗代码时决定尝试装饰器模式 战斗者可以拥有各种被动能力 也可能是不同类型的生物 我认为装饰器可以让我在运行时以各种组合添加行为 因此我不需要数百个子类 我几乎已经完成了 15 个左右的被动能力装饰器 在测试中我发现
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • Zend Framework 生成唯一的字符串

    我想生成一个唯一的 4 6 个字符长的字母数字字符串 以便与每个记录 用户 一起保存在数据库中 db 字段具有唯一索引 因此尝试保存预先存在的字符串会生成错误 现在我正在生成一个随机字符串并使用 try catch 因此在添加新记录时如果抛
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 为什么 _.escape 会修改 Underscore.js 中的 / 字符?

    我正在浏览下划线 js api http underscorejs org escape我注意到 escape逃脱 lt gt and 人物 让我惊讶的是逃跑 有没有理由逃避 我不知道的角色 EDIT 好吧 看来是推荐的OWASP http
  • MVC 3 实体框架中从多对多链接表添加关系时发生主键冲突

    我已经阅读了这里的许多问题 这些问题乍一看似乎有类似的问题 但看起来并不完全相同 如果这个问题在某个地方得到了回答 我深表歉意 但就像我说的 我已经阅读了很多内容 但找不到答案 我正在使用实体框架和 MVC 3 我正在尝试向实体框架中的产品
  • JavaScript:V8 问题:小整数是否被合并?

    正在看这个V8设计文档 https docs google com document d 11T2CRex9hXxoJwbYqVQ32yIPMh0uouUZLdyrtmMoL44 edit 其中有一个部分用于Constant Pool En
  • CoreBluetooth配对反馈/回调

    感觉好像我在这里遗漏了一些东西 但是我如何获得有关密码保护的外围设备配对失败还是成功的反馈 当我连接受密码保护的外围设备时 会弹出密码 UIAlertView 并且外围设备会立即连接 调用 didConnectPeripheral 并断开连
  • MS Sql:条件 ORDER BY ASC/DESC 问题

    我想使查询中的排序成为有条件的 因此如果它满足条件 则应按降序排序 例如 SELECT FROM Data ORDER BY SortOrder CASE WHEN Direction 1 THEN DESC END 不要改变ASC or
  • 使用 NLTK 和 WordNet;如何将动词简单时态转换为现在时、过去时或过去分词形式?

    使用 NLTK 和WordNet https en wikipedia org wiki WordNet 如何将动词简单时态转换为现在时 过去时或过去分词形式 例如 我想编写一个函数 它会给我预期形式的动词 如下所示 v go presen
  • Docker:使用 dockerfile 在 Windows 容器上安装 chrome

    我正在尝试在我的 Windows 容器上安装 Chrome 我已经使用 dockerfile 创建了我的 docker 映像 并且我想使用此 dockerfile 安装 chrome 我尝试过使用以下命令 RUN apt get updat
  • 我可以在运行 VS 单元测试时进行调试吗?

    我想对使用自定义事件的用户组件进行单元测试 当不使用 VS 单元测试框架 debug assert 执行此操作时成功 当使用 VS 单元测试框架执行相同的操作时 断言失败 这是不合逻辑的 所以我想在使用 VS 框架进行单元测试时进行调试 但
  • C++ 后端和 C# 前端?

    我有一个项目 在该项目中 我必须每秒处理 100 条 如果不是 1000 条 消息 并相应地在图表上处理 绘制这些数据 用户将搜索一组数据 其中将实时绘制图表 而不必在图表上绘制数千个值 我无法理解使用 DLL 在 C 中进行大量消息处理
  • Android Studio 无法识别我的设备

    问题就在这里 我想在我的设备 Samsung Galaxy Ace 2 上运行 Android Studio 应用程序 但对我来说没有任何作用 告诉我我错过了什么 1 USB调试打开 2 ADB驱动程序已安装 在设备管理器中我可以看到And
  • 将视图或窗口添加到 MainWindow

    我在一些我无法理解的基本概念上遇到了困难 我希望有人能为我解决一些问题 因为我没有找到可以解释这一点的资源 或者也许 它在明亮的地方 但我只是看不到它 到目前为止的理解 主窗口包含菜单 因此或多或少是必要的 这info plist持有笔尖
  • Firebase 错误:TypeError:无法使用“in”运算符在未定义中搜索“_delegate”

    我是 firebase 的新手 过去两天在查询和删除集合中的文档时遇到了一些困难 具体来说 每次启动服务器时 我都会尝试清除公司虚拟数据的整个集合 然后再循环虚拟数据并将其写入集合 以防止重复 我已经能够将我的公司虚拟数据写入我的 公司 集
  • 如何在 Android 模拟器中运行 YouTube 视频

    我制作了一个程序 在列表视图中获取 YouTube 视频列表 并且还实现了 onClick 来源 我遵循了有关如何使用 youtube gdata 的教程 使用来自 youtube 的视频和 onclick 填充列表视图 源代码可在以下位置
  • RestTemplate 与正文一起获取

    如何使用休息模板来获取身体 基于以下问题 通过 JSON 格式的 RestTemplate 进行 POST 请求 https stackoverflow com questions 4075991 post request via rest
  • Fabric Javascript SDK 和 Hyperledger Composer 之间有哪些功能差异?

    除了 Composer 使原型业务网络的部署和测试变得更加容易 以及我们不需要了解 golang 来开发链代码这一事实之外 这些接口提供的功能有何差异 可能会导致人们选择其中之一另一个 这篇文章或许可以为您提供所需的答案 https blo
  • 高精度事件定时器

    include target h include xcp h include LocatedVars h include osek h This task is activated every 10ms long OSTICKDURATIO
  • NSJSONSerialization 不创建可变容器

    这是代码 NSError parseError NSMutableArray listOfObjects NSJSONSerialization JSONObjectWithData dataUsingEncoding NSUTF8Stri
  • 基于标记的 Google 地图居中

    我想根据动态加载的标记将我的 Google 地图居中 我已经看到了 边界 的使用并尝试实现 适合边界 但我无法将其正确应用到我的地图上 这是代码 var MapStart new google maps LatLng 41 664723 9
  • rake 任务中 open-uri 出现 404 错误...是什么原因造成的?

    我有一个 rake 任务 它从 API 获取 JSON 数据 解析它 并将其保存到数据库 task embedly gt environment do require json require uri require open uri Vi
  • PHP - 获取函数的所有参数(甚至是可选参数)

    我想从函数中获取所有参数 传递或未传递 Example 如果我打电话 test func get args foo 10 var dump test 我只会有一个数组 0 gt 10 即使我没有传递可选参数 我怎样才能获得它的值 我知道fu