Todo depende del uso, si lo vas a atar de la forma que lo requieres, mejor hazlo desde dentro de la clase, pero dejalo abierto para poderse ingresar, por ejemplo, en mi DataGrid, tienes dos posibilidades, pasarle un Formatter desde fuera, o usar el integrado (iniciado desde dentro de la clase).
Entonces puedes hacer algo asi (atamos una instancia externa):
Código php:
Ver original$formatter = new Gecko_Datagrid_Formatter();
$DataGrid = new Gecko_Datagrid( 'grid1', $settings, $formatter );
ó:
Código php:
Ver original$DataGrid = new Gecko_Datagrid( 'grid1', $settings );
$formatter = $DataGrid->getFormatter();
La clase al no detectar que hay un formatter "valido", crea uno por defecto dentro y te regresa la instancia atada a ese grid, ya que en este caso un formatter sin un grid no sirve de nada (patrón decorador).
Por eso te decia, deja la flexibilidad al programador de las dos formas, yo en mi caso lo dejo abierto para quien lo quiera usar, dando métodos como getFormatter(), setFormatter(), instanciandolo desde el constructor, o pasandolo como parámetro en el $settings array.
Si quieres ver como esta implementado date una vuelta por la pagina de GoogleCode.
Saludos.