Единственный способ сделать это - использовать магию __call
. Вы должны сделать все все методы частными, чтобы они не были доступны извне. Затем определите метод __call для обработки вызовов метода. В __call вы можете выполнить любую функцию, которую хотите , прежде чем вызовет функцию, которая была намеренно вызвана.