Sto lavorando su alcune estensioni di Magento 2 che richiedono la lettura di file dal file system.
Quando si esegue lo sniffer php utilizzando gli standard ECGM2, si lamenta del fatto che sto usando funzioni come basename
o dirname
.
L'uso della funzione dirname () è proibito
o
L'uso della funzione basename () è vietato
Quale wrapper dovrei usare al posto di quelli per ottenere lo stesso effetto?
[EDIT]
Ecco un po 'di codice, ma non è così rilevante per la domanda.
Ho una classe di raccolta che estende la \Magento\Framework\Data\Collection\Filesystem
classe e voglio elencare questa raccolta in una griglia (componenti ui) e una delle azioni nella griglia è un'azione di download.
Per questo, ho bisogno di ottenere il nome effettivo del file in modo da poterlo inviare all'azione di download.
// here $file is dynamic and it can be
// folder/filename.xml or folder/subfolder/file.tar.gz
//so there is no strict number of folders and subfolders.
$file = $downloader->getRelativePath($packageName);
$relativeFile = UmcFilesystem::VAR_DIR_NAME . '/' .$file;
$absoluteFile = $rootDir->getAbsolutePath($relativeFile);
if ($rootDir->isFile($relativeFile) && $rootDir->isReadable($relativeFile)){
//I don't want to use `explode` just for the sake of avoiding basename
$fileName = basename($absoluteFile);
$this->fileFactory->create(
$fileName,
null,
DirectoryList::VAR_DIR,
'application/octet-stream',
$rootDir->stat($relativeFile)['size']
);
$resultRaw = $this->resultRawFactory->create();
$resultRaw->setContents($rootDir->readFile($relativeFile));
return $resultRaw;
} else {
...
}
basename
lì. Si prega di leggere attentamente la domanda.