СП

Правильно я понимаю, что вот здесь
empty($array) всегда будет возвращать false, т. к. $array — объект? И как следствие весь блок
if (!property_exists($array, $part) && empty($array)) {
return $default;
}
... можно смело удалить.+ в описании к методу
getValue() добавить, что $default возвращается только для массивов, а для объекта всегда будет попытка возвращения, т. к. могут быть магические методы и 100% узнать, что значения нет в объекте нельзя.
