Tôi đang làm việc trên một số tiện ích mở rộng Magento 2 yêu cầu đọc tệp từ hệ thống tệp.
Khi chạy trình thám thính php bằng các tiêu chuẩn ECGM2, nó phàn nàn về thực tế là tôi đang sử dụng các hàm như basename
hoặc dirname
.
Việc sử dụng hàm dirname () bị cấm
hoặc là
Việc sử dụng hàm basename () bị cấm
Tôi nên sử dụng trình bao bọc nào thay vì các trình bao bọc để có được hiệu quả tương tự?
[EDIT]
Đây là một số mã, nhưng nó không liên quan đến câu hỏi.
Tôi có một lớp bộ sưu tập mở rộng \Magento\Framework\Data\Collection\Filesystem
lớp và tôi muốn liệt kê bộ sưu tập này trong một lưới (ui-thành phần) và một trong những hành động trong lưới là một hành động tải xuống.
Đối với điều này, tôi cần lấy tên thật của tệp để tôi có thể gửi nó đến hành động tải xuống.
// 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
ở đó. Xin vui lòng đọc câu hỏi cẩn thận.