Pues si, con singleton quedaria mejor eso que planteas, y asi pero aun asi antes de usar un metodo harias algo como
Código PHP:
Ver original<?php
$carro = Carrito::getInstance();
$carro->agregarProducto();
y asi no creas una nueva instancia cada vez.
Pero eso que dices de ejecutar algo antes de cada método creo que no existe, siempre eh visto que se usa eso que te digo, ejecutar algo al inicio del metodo.
Saludos