【发布时间】:2010-11-26 19:04:53
【问题描述】:
我想知道在 PHP 的另一个函数中定义一个函数是否是一件好事。就性能而言,在函数之前(而不是内部)定义它不是更好吗?
【问题讨论】:
标签: php optimization memory function
我想知道在 PHP 的另一个函数中定义一个函数是否是一件好事。就性能而言,在函数之前(而不是内部)定义它不是更好吗?
【问题讨论】:
标签: php optimization memory function
反对它的原因有很多:
create_function() (<PHP 5.3) 或 closures (>=PHP5.3) 完成【讨论】:
这是一种不好的做法。不仅所有奇怪的事情都可能发生,并且您会在尝试调试它时浪费太多时间,而且代码也会变得更加混乱。
就性能而言,我并不完全确定。我所知道的是,如果您在另一个函数中定义一个函数,那么最后一个函数只有在调用外部函数时才会存在。这可能会减轻一些记忆。但我相信回报并不显着。
一种非常常见的方法是在函数外部定义函数并在内部调用。
【讨论】:
这取决于具体情况,因为它可能比使用create_function() 更可取。但是你应该知道在函数中创建的函数是全局的。
function creator() {
function inside() {
echo "hi.";
}
}
creator();
inside();
这将打印“嗨”。即使inside() 函数是在创建者函数的“内部”创建的。所以如果你的循环中有一个函数正在创建一个函数,你需要检查该函数是否存在,否则在第一次循环后会导致function exists错误。
【讨论】:
我认为您应该更关心可维护性,而不是性能,尤其是在这种情况下,两种解决方案之间的性能差异可能并不大,而可维护性的差异似乎很重要。
就像 Donald Knuth 说的:
我们应该忘记小 效率,说大约 97% 时间:过早优化是 万恶之源。
这是完全正确的,在这种情况下;-)
【讨论】: