Ah ya te entendí...

no creo que exista una forma de hacerlo, ya que no hay control sobre cual fue el "último" método, tampoco puedes saber si vas a llamar a otro método, a lo mucho que puedes hacer me imagino es usar el método
invoke para ejecutar la consulta, ejemplo:
Código PHP:
Ver original<?php
class Query
{
private $_limit;
private $_offset;
private $_query;
public function __construct()
{
$this->_query = 'SELECT * FROM foo';
}
public function limit($results)
{
$this->_query .= " LIMIT $results";
return $this;
}
public function offset($results)
{
$this->_query .= " OFFSET $results";
return $this;
}
public function __toString()
{
return $this->_query;
}
public function __invoke()
{
$query = (string) $this->__toString();
echo "Executing $query";
}
}
$query = new Query();
$query1 = clone $query;
$query2 = clone $query;
$query3 = clone $query;
$query1->limit(10);
$datos = $query1();
$query2->offset(10);
$datos = $query2();
$query3->limit(10)->offset(10);
$datos = $query3();