Arquivos YAML podem ter comandos PHP (YAML can contain php code)

Esses dias estava mexendo num projeto que envolvia paths, etc.
Foi quando resolvi criar no app.yml o tal path:

app.yml



all:
  path:
    cartoes:   /cartoes

Ok. Eu usava isso da seguinte maneira na action:


()
$path = sfConfig::get("sf_root_dir") . sfConfig::get("app_path_cartoes") . "/";

Como eu tive que usar isso mais de uma vez, aconteceu de paths serem escritos errados como por exemplo:

// duas barras no meio
sfConfig::get("sf_root_dir")."/".sfConfig::get("app_path_cartoes")."/";
// sem a barra no final
sfConfig::get("sf_root_dir").sfConfig::get("app_path_cartoes");
// sem nenhuma barra
sfConfig::get("sf_root_dir").sfConfig::get("app_path_cartoes");

além de eu estar escrevendo código a mais…
Então, descobri que o YML aceita comandos de PHP, porém com alguns pequenos detalhes.


all:
  path:
    cartoes: <? php echo (sfConfig::get(‘sf_root_dir’)."/cartoes/\n" ?>

O lance é ficar atento ao “\n” no final, porque sem isso vai o YML fica inválido gerando erro.
Isso pode ser melhorado utilizando o echoln.


all:
  path:
    cartoes: <? php echoln (sfConfig::get(‘sf_root_dir’) . "/cartoes/" ?>

Pronto. Ai temos o path correto que utilizará apenas um sfConfig::get.
Isso pode ser usado para outros diversos casos, é claro.