Cuando aportes código a Symfony2, debes seguir sus estándares de codificación. Para no hacer el cuento largo, aquí está la regla de oro: limítate el código Symfony2 existente. La mayoría de los Paquetes de código abierto y librerías utilizadas por Symfony2 también siguen las mismas pautas, y también deberías hacerlo.
Recuerda que la principal ventaja de los estándares es que cada pieza de código se ve y se siente familiar, no se trata de que esta o esa sea más legible.
Symfony sigue los estándares definidos en los documentos PSR-0, PSR-1 y PSR-2.
Ya que una imagen —o algún código— vale más que mil palabras, he aquí un pequeño ejemplo que contiene la mayoría de las funciones descritas más adelante:
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Acme;
/**
* Demostración de estándares de la codificación.
*/
class FooBar
{
const SOME_CONST = 42;
private $fooBar;
/**
* @param string $dummy Some argument description
*/
public function __construct($dummy)
{
$this->fooBar = $this->transformText($dummy);
}
/**
* @param string $dummy Some argument description
* @param array $options
*
* @return string|null Transformed input
*/
private function transformText($dummy, $options = array())
{
$mergedOptions = array_merge(
$options,
array(
'some_default' => 'values',
'another_default' => 'more values',
)
);
if (true === $dummy) {
return;
}
if ('string' === $dummy) {
if ('values' === $mergedOptions['some_default']) {
$dummy = substr($dummy, 0, 5);
} else {
$dummy = ucwords($dummy);
}
} else {
throw new \RuntimeException(sprintf('Unrecognized dummy option "%s"', $dummy));
}
return $dummy;
}
}