Koşullu tanımlayan fonksiyonlar

5 Cevap php

Şartlı PHP işlevleri tanımlamak için herhangi bir avantajı var mı? Örneğin, ben buna benzer bir komut dosyası varsa

function abc() {
    ...
    }

function xyz() {
    ...
    }

if (user_is_logged_in()) {
    ...
    abc();
    ...
    xyz();
    }
else echo 'Not logged in.';

Herhangi bir avantaj olacağını, ve if deyimi içinde bu fonksiyon tanımları hareket etmek, yasal olurdu? Ben PHP arka uç hakkında çok şey bilmiyorum, ancak sunucu potansiyel fonksiyonlarını tanımlayan bir sürü iş yapmak zorunda ve sonra onları asla kullanılmamalıdır olabilir gibi görünüyor.

5 Cevap

Ben bir çok fonksiyonu tanımlama ile "sunucu yapmak için bir sürü iş olan" dert olmaz. Büyük olasılıkla, bu uygulamada bir darboğaz olacak değildir.

PHP ya da herhangi bir dilde, koşullu fonksiyon tanımının tasarım karşı tavsiye ediyorum. Aksine, işlev içindeki mantığı tanımlayabilirsiniz. Örneğin, abc () fonksiyonu içinde, kullanıcı oturum olup olmadığını denetler if / else mantığı sağlayabilir

Alternatif olarak, kod temiz ve anlamayı kolaylaştırmak için sınıf yöntemleri ve nesneleri kullanabilirsiniz. Eğer Ö.Ö. anlamak, o gitmek için yol olacaktır.

Bu kesinlikle yasaldır, ama önemli ölçüde ders kod okunabilirliği / idame azalacak çünkü ben, buna karşı tavsiye ederim.

Yerine (APC gibi) bir op kod önbelleği kullanmak, bu sunucu üzerindeki yükü azaltacaktır.

Drupal Devs farklı op kodu önbelleklerini için bir kriter yaptım, ve ayrıca op kod önbelleği olmayan karşılaştırıldığında PHP, Sen http://2bits.com/articles/benchmarking-drupal-with-php-op-code-caches-apc-eaccelerator-and-xcache-compared.html de sonuçlarını görebilirsiniz

Ben, örneğin, anonim işlevler oluşturmak için sözdizimi ayarlamak gerekir ki, düşünüyorum, ama yanlış olabilir:

<?php
if(a) {
abc = function {
function stuff
}
} else if (b) {
xyz = function {
function stuff
}
}
?>

Ben bunun içine gcc kazıya izin vermeden önce C optimize edecek gibi çözümlenmeden önce PHP optimize etmek için değil çok çabuk öğrendi.

Hiç kullanılmamış olan PHP tanımlanmış fonksiyonlar endişe etmeyin. Aksine, aslında ulaşıldığında fonksiyonlarını optimize içine çaba. Tabii ki, hemen hemen aynı şeyi 20 fonksiyonların kod çoğaltma önlemek ... ama herhangi bir dilde verilen bir bulunuyor.

Şartlı bir tanım optimizasyonu olarak kullanılmamalıdır ancak eklentiler onları değiştirmek için izin function_exists to provide alternate implementations or to create fall-backs in case an extension isn't available. Wordpress does the former with many functions (e.g. wp_hash_password ) ile kombinasyon halinde de kullanılabilir.