php嵌套函数调用原理,php-如何防止嵌套函数调用?

第一个问题,如果我做错了或者这是重复的,请原谅我,我找不到其他类似的问题.

我正在编写一个非常基本的转换器函数i18n($string1),当给定$string1时,它会查询索引.如果字符串与索引中的某项匹配,则返回翻译$string2.如果索引中不存在$string1,则会在索引中创建一个新条目,以便用户稍后将转换后的$string2写入其中.

我想尝试解决的问题是,草率的开发人员(me)可能不小心拨打了i18n(i18n($string1)).解决的方法是内部调用在索引中找到$string1,返回$string2,然后再次将其传递给试图在索引中找到$string2的函数.这将失败,因为$string2是翻译,并且会提示用户翻译翻译…这没有帮助.

我相信我想要的是,在函数被称为嵌套在自身内部的情况下,它返回字符串$string1.因此,我在内部调用i18n的次数无关紧要,它总是转换字符串$string1.

做这个的最好方式是什么?我考虑过使用静态或全局$isCalled变量或单例变量,但过去有人告诉我,这些解决方案几乎可以肯定是邪恶的,而且可能还有更好的方法.

提前致谢!

解决方法:

您被告知正确.

您可以通过分析debug_backtrace()进行操作,但这确实很耗时间和资源.同样,这也不是翻译功能的开销.

如果开发人员使用已翻译的字符串调用翻译功能,则开发人员应负责解决此问题,而不是软件.

避免重复调用的一种方法是使用PHP_CodeSniffer并定义将禁止这种用法的编码标准.如果两个功能不在同一行,则很难检查这些内容.

标签:nested,php

来源: https://codeday.me/bug/20191122/2056789.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值