En vez de usar dos explodes, podrías usar un preg_match_all, no?
Código PHP:
public function _parse_include()
{
$this->content = file_get_contents('templates/default/index.tpl');
if(strchr($this->content, '#include')) {
preg_match_all('/#include {(.*?)};/', $this->content, $object_pieces);
foreach( $object_pieces[1] as $piece) {
if(file_exists(self::$_path.$piece)):
include(self::$_path.$piece);
else:
Exclusion::make("Canst not include the file: {$piece}", 303);
endif;
}
}
}
Intento explicarme:
preg_match_all creará, en $object_pieces, algo así:
Código:
array (
0 =>
array (
0 => '#include {prueba.tpl};',
1 => '#include {xD.tpl};',
),
1 =>
array (
0 => 'prueba.tpl',
1 => 'xD.tpl',
),
)
Por ejemplo (habiendo puesto otro include). Asi pues, el foreach lo haces del $object_pieces[1], q es donde están los resultados... y luego vas haciendo los includes (pq guardarlo en una variable, y no añadirlos directamente?).
Creo q es algo así lo q buscas :)