Ich habe den folgenden Code in zahlreichen Orten (in Tausend Plätzen) um mein Projekt:php: schreiben isset Funktion, den Wert oder null zurückgibt
$foo = isset($mixed) ? $mixed : null;
Wo $mixed
kann alles sein: Array, Array-Element, Objekt, Objekteigenschaft, Skalar usw. Zum Beispiel:
$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;
Gibt es eine Möglichkeit, diese wiederholte Logik als (einfache) Funktion zu schreiben? Zum Beispiel habe ich versucht:
function myIsset($mixed)
{
return isset($mixed) ? $mixed : null;
}
Die obige Funktion sieht aus wie es funktionieren würde, aber es nicht in der Praxis. Zum Beispiel, wenn $object->prop
nicht existiert, und ich rufe myIsset($object->prop))
, dann bekomme ich fatalen Fehler: Undefined property: Object::$prop
bevor die Funktion sogar aufgerufen wurde.
Irgendwelche Ideen, wie ich eine solche Funktion schreiben würde? Ist es überhaupt möglich?
Ich weiß, dass einige Lösungen here und here geschrieben wurden, aber diese Lösungen sind nur für Arrays.
Ich glaube nicht, dass Sie das effizienter machen können. Stattdessen würde ich versuchen, die Anzahl der Male, die Sie verwenden, zu reduzieren, * Tausende * scheint viel zu viel. Ich würde vermuten, dass ganze Blöcke von Variablen entweder gesetzt sind oder nicht, so dass Sie die Möglichkeit haben, verschiedene zu setzen. – jeroen
@jeroen Es ist ein "Code-Geruch", wenn Sie dies so oft überprüfen müssen –