Hola:
Estoy superando los test de SensioLabsInsight y me faltan 8 para conseguir el 100%. 7 de estos fallos es el siguiente "Absolute path constants DIR and FILE should not be used" en referencia a que en las entidades en las que se suben archivos tengo este cogido:
protected function getUploadRootDir() { return __DIR__.'/../../../../web/'.$this->getUploadDir(); }
¿Hay alguna manera de solucionarlo de manera sencilla?
Respuestas
Las entidades de Doctrine están diseñadas para que sean objetos PHP simples. Esto significa que no tienen acceso a configuraciones o servicios externos y esto se considera una característica en vez de una limitación o un error.
La forma recomendada de solucionar este problema es pasar desde fuera los parámetros que necesites. Por ejemplo, en tu caso podrías hacer lo siguiente:
protected function getUploadRootDir($absoluteWebDir) { return $absoluteWebDir.'/'.$this->getUploadDir(); }
Y en un controlador por ejemplo, harías lo siguiente:
// ... $dir = $entity->getUploadRootDir($this->container->getRootDir().'/../web');
@javiereguiluz