Ich verwende SensioLabs Insight, um meine Codequalität zu kontrollieren.Warum die absoluten Pfadkonstanten __DIR__ und __FILE__ in Symfony nicht verwendet werden sollten
Für eine einfache Datei-Upload, habe ich den absoluten Pfad meiner Upload-Verzeichnis erhalten:
protected function getUploadRootDir()
{
// the absolute directory path where uploaded
return __DIR__.'/../../../../web/'.$this->getUploadDir();
}
-Code direkt von der offiziellen Dokumentation (How to handle file uploads with Doctrine)
Aber SLInsight wirft eine Warnung, wenn der Code kommt analysiert enthält __DIR__
oder __FILE__
PHP magische Konstanten:
__DIR__
und__FILE__
Konstanten können Konflikte mit dem überschreibenden System der Symfony-Ressource verursachen.
Wie die Verwendung dieser Konstanten Konflikte mit Symfony verursachen kann?
Und wie kann ich sie in meinem Code vermeiden?
Der Titel ist irreführend. Es wird ** empfohlen ** die absoluten Pfadkonstanten '__FILE__' und' __DIR__' generell zu verwenden. Es ist besser, stattdessen den Datei-Locator von Symfony * zu verwenden, wenn Sie Symfony (oder den Datei-Locator) * in Ihrem Projekt verwenden. – axiac
Richtig, ich habe es aktualisiert. Danke – chalasr
Um ehrlich zu sein, wenn ich diesen Code sehe, wäre meine Reaktion "es muss einen besseren Weg geben als das". Sie codieren hart, dass der Pfad, den Sie haben wollen, genau 4 Stufen hoch ist, dann ein Verzeichnis namens "Web" und dann ein dynamisches Segment. Das sieht sehr fragil und unflexibel aus. Sicherlich sollte dieser ganze Pfad relativ zu einer bestimmten Basis irgendwo konfiguriert sein. – IMSoP