Mam następujący kod w wielu miejscach (w tysiącach miejsc) wokół mojego projektu:php: napisać Isset funkcję, która zwraca wartość lub wartość null
$foo = isset($mixed) ? $mixed : null;
Gdzie $mixed
może być cokolwiek: tablica, element tablicy, obiekt, właściwość obiektu, skalar itd. Na przykład:
$foo = isset($array['element']) ? $array['element'] : null;
$foo = isset($nestedArray['element']['key']) ? $nestedArray['element']['key'] : null;
$foo = isset($object->prop) ? $object->prop : null;
$foo = isset($object->chain->of->props) ? $object->chain->of->props : null;
Czy istnieje sposób na zapisanie tej powtarzającej się logiki jako (prostej) funkcji? Na przykład próbowałem:
function myIsset($mixed)
{
return isset($mixed) ? $mixed : null;
}
Powyższa funkcja wygląda na to, że zadziała, ale nie sprawdza się w praktyce. Na przykład, jeśli $object->prop
nie istnieje, a ja dzwonię pod numer myIsset($object->prop))
, otrzymuję błąd krytyczny: Undefined property: Object::$prop
, zanim funkcja zostanie wywołana.
Jakieś pomysły dotyczące napisania takiej funkcji? Czy to możliwe?
Zdaję sobie sprawę, niektóre rozwiązania zostały opublikowane here i here, ale te rozwiązania są tylko dla tablic.
Nie sądzę, że można to zrobić bardziej efektywnie. Zamiast tego spróbowałbym zmniejszyć liczbę razy, kiedy go używasz, * tysiące * wydaje się zdecydowanie za dużo. Domyślam się, że całe bloki zmiennych są ustawione, czy nie, więc sprawdzanie, czy można dać możliwość ustawienia różnych. – jeroen
@jeroen To jest "zapach kodu", jeśli musisz sprawdzać to tak często wszędzie –