durumlar için değişkenleri ve bir geçiş için bir işlevi kullanarak?

4 Cevap php

PHP bunu yapmak istiyorum:

switch (function_foo($bar,$bar2)) {
case $fu:
    *Do Stuff*
    break;
case $fubar:
    *Do Other Stuff*
    break;
}

Bu korkunç bir fikir mi? Işe yarayacak mı?

4 Cevap

Bir işlevi hiç denemedim switch, (emin değilim Sen bunu bir denemelisiniz), ancak ilk mağaza fonksiyon dönüş bazı değişken değer ve kullanabileceğiniz parametre olarak olmasıdır switch, örneğin :

$return_value = function_foo($bar, $bar2);

switch ($return_value) {
case $fu:
    *Do Stuff*
    break;
case $fubar:
    *Do Other Stuff*
    break;
}

Her durumda {[ile biterse the manual göre, bir PHP switch deyimi tam if / else if tabloların (bir dizi gibi (4)]}). Bu sizin tekniği çalışması gerektiği anlamına gelir. Sürece fonksiyon isimleri ve değişken isimleri okunabilir gibi, ben onunla herhangi bir sorun düşünemiyorum.

Diğer bazı dillerde, switch deyimi aslında if / else if tabloları üzerinde bir performans iyileştirme, yani derleme zamanında durum değerlerini bilmek gerekir. PHP bu tür şeyler yapar gibi görünmüyor.

Gizli fonksiyonlar Onun posibble evet ve onun adı lambda,

$lambda = function($a, $b) {
    return $a * $b;
};


$return_value = function foo($bar, $bar2){ return $logic }

switch ($lambda(2,4)) {
case $fu:
    *Do Stuff*
    break;
case $fubar:
    *Do Other Stuff*
    break;
}