Używam SensioLabs Insight do kontrolowania jakości mojego kodu.Dlaczego bezwzględne stałe ścieżki __DIR__ i __FILE__ nie powinny być używane w Symfony
Dla prostego przesłanie pliku, muszę uzyskać bezwzględną ścieżkę do mojego katalogu uploads:
protected function getUploadRootDir()
{
// the absolute directory path where uploaded
return __DIR__.'/../../../../web/'.$this->getUploadDir();
}
Kod pochodzących bezpośrednio z oficjalnej dokumentacji (How to handle file uploads with Doctrine)
Ale SLInsight zgłosi ostrzeżenie, jeśli kod analizowane zawiera __DIR__
lub __FILE__
PHP magiczne stałe:
__DIR__
i__FILE__
stałe mogą powodować konflikt z systemem przesłonięcia zasobów Symfony.
W jaki sposób użycie tych stałych może powodować konflikty z Symfony?
Jak mogę ich uniknąć w moim kodzie?
Tytuł wprowadza w błąd. Zaleca się ** stosowanie ** bezwzględnych stałych ścieżek '__FILE__' i' __DIR__' w ogóle. Lepiej używać lokalizatora plików Symfony zamiast * tylko wtedy, gdy używasz Symfony (lub lokalizatora plików) * w swoim projekcie. – axiac
Dobra, zaktualizowałem to. Dziękuję – chalasr
Szczerze mówiąc, gdybym zobaczył ten kod, moja reakcja byłaby "musi być lepsza droga niż to". Twarde kodowanie oznacza, że żądana ścieżka ma dokładnie 4 poziomy, a następnie dir o nazwie "web", a następnie segment dynamiczny. To wygląda bardzo kruche i nieelastyczne. Na pewno cała ta ścieżka powinna być skonfigurowana gdzieś w stosunku do konkretnej bazy. – IMSoP