我想知道在PHP中的另一个函数中定义函数是否是一件好事。在功能方面(而不是在内部)在性能方面定义它不是更好。
答案 0 :(得分:22)
我认为你应该更关心可维护性,而不是更多关于性能,特别是在那种情况下,两种解决方案之间的性能差异可能不是那么大,而可维护性的差异似乎很重要。
像唐纳德克努特说的那样:我们应该忘记小事 效率,约占97% 时间:过早优化是 万恶之源。
在这种情况下,这是完全正确的; - )
答案 1 :(得分:11)
反对它有多种原因:
create_function()
(<PHP 5.3
)或closures(>=PHP5.3
)答案 2 :(得分:7)
这是一种不好的做法。不仅所有奇怪的事情都会发生,你将失去太多的时间来尝试调试它,而且代码变得更加混乱。
就性能而言,我并不完全确定。我所知道的是,如果你在另一个函数中定义一个函数,那么最后一个函数只有在调用外函数时才会存在。这可能会减轻一些记忆。但我相信收益并不重要。
一种非常常见的方法是在该函数之外定义函数并在其中调用它。
答案 3 :(得分:6)
这取决于具体情况,因为它可能比使用create_function()
更合适。但是,您应该知道在函数中创建的函数在范围内是全局的。
function creator() {
function inside() {
echo "hi.";
}
}
creator();
inside();
这将打印“hi”。即使inside()
函数是在创建者函数的“内部”创建的。因此,如果在创建函数的循环中有函数,则需要检查函数是否存在,否则在第一次循环后会导致function exists
错误。