Ben PHP başka bir işlev içinde bir işlev tanımlamak için iyi bir şey olup olmadığını bilmek istiyorum. Bu performansları açısından (içinde değil ve) işlevi önce onu tanımlamak için daha iyi değil mi.
Ben maintenability farkı önemli görünüyor ederken, özellikle performansları fark muhtemelen iki çözümler arasında büyük değildir Bu tür durumlar içinde, performansı hakkında maintenability hakkında daha fazla ve daha az bakım gerektiğini düşünüyorum.
Gibi Donald Knuth dedi:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Bu, bu durumda, oldukça doğrudur ;-)
Bu kötü bir uygulamadır. Tüm garip şeyler olabilir ve bunu ayıklamak için çalışırken çok fazla zaman kaybedersiniz, hem de kod daha da kafa karıştırıcı hale sadece.
Performans açısından ben bu konuda tam emin değilim. Tüm bildiğim içerisinde başka bir işlev tanımlamak eğer dış bir denir eğer, bu son işlev sadece var olmasıdır. Yani mayıs kabartma bazı bellek. Ama ödeme anlamlı olmadığına inanıyorum.
Bir çok yaygın bir şekilde bu işlevi dışında işlevini tanımlamak ve içine aramak.
Buna karşı birden çok nedeni vardır:
create_function()
(<PHP 5.3
) veya closures (>=PHP5.3
ile yapılırO create_function()
kullanmaktan daha tercih edilebilir gibi, duruma bağlıdır. Ancak işlev içinde oluşturulan fonksiyon kapsamında küresel olduğunu bilmeli.
function creator() {
function inside() {
echo "hi.";
}
}
creator();
inside();
Bu "merhaba." Yazdıracak inside()
function yaratıcısı işlevi "içeriden" oluşturulmuş olsa bile. Eğer bir işlev oluştururken bir döngü içinde bir işlevi var ise, aksi takdirde ilk döngü sonra function exists
hataya neden olur, fonksiyon olup olmadığını görmek için kontrol etmeniz gerekir.