У меня есть базовый класс Product, мне нужно добавить функцию, тоесть расширить его возможности не трогая сам класс и его родительские класы.
Насколько я понял, вы хотите увидеть в PHP extension functions. К сожалению в PHP их нет.
1) Самый true путь - это создать класс потомок MyProduct extends Product и добавить метод туда
2) Мазохистский вариант - можно воспользоваться расширением runkit, а конкретно методом runkit_method_add и добавить метод в рантайме
3) Третий путь - создать функцию (а лучше утилитный класс со статическим методом) с ресивером. Т.е. такую, куда первым параметром будет передаваться ваш объект и реализовать логику в нем. Если внутри данной функции будут нужны приватные поля, то можно воспользоваться рефлексией, хотя это и ай-ай-ай.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей