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