Опять занесло меня в PHP программирование, надо было сделать подержку настроек из глобального config.json для уже существующих сайтов на WordPress.
И вот столкнулся с тем редким случаем когда Гавно-Код™ aka Как-Индусы® лучшее решение:
$props = explode('.', $configPropertyName); switch (count($props)) { // TODO: Add more deep cases if the Config become too nested. case 3: $value = $config->{$props[0]}->{$props[1]}->{$props[2]}; break; case 2: $value = $config->{$props[0]}->{$props[1]}; break; default: $value = $config->{$props[0]}; }
Можно было бы написать итератор на любую глубину вложености свойств, или загрузить JSON в виде именованого массива. Но все эти способы менее читаемы, да и не дают никакого выиграша ни в скорости, ни в отладке.
P.S. Не забывайте писать TODO: для таких вот «хаков», через год сами не поймете почему так написано и вместо добавить пару копи-пастов начнете рефакторить с криками: «Да кто так пишет?!»