gpt4 book ai didi

php - 使用关联数组作为 php 函数的输入

转载 作者:行者123 更新时间:2023-12-02 07:29:44 25 4
gpt4 key购买 nike

有时,我会编写一个带有单个输入的 PHP 函数,一个包含该函数所有输入的关联数组。这样做有好处,例如不必记住输入的正确顺序,但我也注意到它使得对大型代码库的更改变得更加容易;当我需要添加另一个变量,并且该变量必须传递 4 或 5 个预先存在的函数时,如果我可以将它粘贴到数组中并传递它,那就容易多了。

我的问题是,这样做有什么缺点吗?

我很少在示例中或在我使用的开源中看到以这种方式编写的函数,这让我相信可能存在缺点。如果没有理由不这样做,那么为什么不以这种方式编写所有函数呢?

更新

感谢您的所有回答。看起来有两个主要问题很突出:

代码可读性 - 无法分辨哪些变量将进入函数以及它们的用途

变量蠕变 - 最终可能会导致大量数组从一个函数跳到下一个函数;不应将参数传递给不需要它们的函数

这两点都是我没有想到的要点。

似乎总的要点是,出现问题的代码可能应该转换为类。不幸的是,在这个特定的项目中,这样的重构超出了范围,但我也认为 Bill Karwin 的解决方案很好 - 传递一组可选变量

最佳答案

why not write all functions this way?

就此而言,为什么不完全忘记参数,并使用全局变量来处理所有事情呢? (开玩笑)

传递关联数组有一个有用的优点:您可以将多个函数参数设置为可选,并且可以为第 N 个参数传递一个值,而不必为 *N-1 个参数传递一个值*第一个参数。

但是,如果不传递强制参数,则无法生成编译时错误的强制参数。您也不能声明类型检查。

您必须在被调用函数内编写代码来检查所需参数是否存在及其类型。

我使用的另一种方法是为那些必需的参数声明常规参数,然后作为最后一个(可选)参数,声明一个名为 $options 的关联数组,该数组仅包含可选项。

function database_connect($dbname, $user, $password, array $options = array())

关于php - 使用关联数组作为 php 函数的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/997234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com