During a code review my peer Michal Mazur turned me onto the follow example; I have to say I am really digging it: Array Index as constant .
In my specific case here is the usage:
if (!empty($paramData[19]) && is_string($paramData[19])) { $paramData = $paramData[19]; } elseif (empty($paramData[19]) && !empty(isset($paramData[17])) && isset($paramData[17])) { $paramData = $paramData[17]; }
…and the refactored logic:
if (!empty($rowData[$this::FULL_SOURCE]) && is_string($rowData[$this::FULL_SOURCE])) { $imageSource = $rowData[$this::FULL_SOURCE]; } elseif (empty($rowData[$this::FULL_SOURCE]) && !empty(isset($rowData[$this::SQUARE_SOURCE])) && isset($rowData[$this::SQUARE_SOURCE]) ) { $imageSource = $rowData[$this::SQUARE_SOURCE]; }
While a bit more verbose the logic is much easier to read using the contextually named constants.