YAML parses containments up to 2 levels deep as "scalars", 3 levels and more turn it into array:
all:
one:
two_with_or_without_underscores: on
anothertwo: on
results in:
sfConfig::add(array(
'app_one_two_with_or_without_underscores' => true,
'app_one_anothertwo' => true,
but
all:
one:
two:
three: on
anotherthree: on
becomes
sfConfig::add(array(
'app_one_two' => array (
'three' => true,
'anotherthree' => true,
),
Is there any reason for settings to *ever* become arrays? I think offhand that keeping setting names as strings (such as app_one_two_three) no matter how "deep" it lies is much more flexible, allowing more fine-grained settings overriding. Perhaps there's something I didn't think about, but the benefits are exhaustive.