Я пытаюсь создать средство просмотра файлов, где при добавлении, обновлении или удалении файла вы можете видеть обновления файлов в базе данных. Я использую фреймворк Symfony4 и пакет от него под названием ResourceWatcher от YoSymfony. Этот пакет использует пакет Finder от Symfony для поиска файлов в указанных каталогах, а затем наблюдатель сравнивает кэш и новый файл, чтобы увидеть, есть ли какие-либо изменения. Когда я использую метод с наблюдателем, который возвращает массив путей, когда я пытаюсь увидеть массив, он возвращает ноль. Как мне использовать эти методы и их возврат?
Я поместил var_dump везде, чтобы увидеть, что проблема возникает из findChanges () -> getUpdatedFiles () и getNewFiles ();
// СТАРЫЙ КОД
$finder = new Finder();
$finder->files()
->name('*.csv')
->in('%kernel.root_dir%/../src/data/');
//watcher
$hashContent = new Crc32ContentHash();
$resourceCache = new ResourceCachePhpFile('cache-key.php');
$watcher = new ResourceWatcher($resourceCache, $finder, $hashContent);
$watcher->initialize();
if($watcher->findChanges()->hasChanges()){
if($watcher->findChanges()->getNewFiles() === null){
$paths = $watcher->findChanges()->getUpdatedFiles();
}
else{
$paths = $watcher->findChanges()->getNewFiles();
}
$propertyAccessor = PropertyAccess::createPropertyAccessor();
var_dump($propertyAccessor->getValue($paths, '[first_name]'));
die();
}
Я хотел бы иметь возможность видеть пути, преобразовывать их в строку и использовать их в своем другом методе, чтобы данные появлялись в моей базе данных.
В моем var_dump я получаю NULL в терминале.
РЕДАКТИРОВАТЬ: [first_name] находится в моем csv-файле, вы можете напрямую сбросить $ paths.
// НОВЫЙ КОД
$finder = new Finder();
$finder->files()
->name('*.csv')
->in('%kernel.root_dir%/../src/data/');
//watcher
$hashContent = new Crc32ContentHash();
$resourceCache = new ResourceCachePhpFile('cache-key.php');
$watcher = new ResourceWatcher($resourceCache, $finder, $hashContent);
$watcher->initialize();
$changes = $watcher->findChanges();
if(!empty($changes->getUpdatedFiles())){
$updatedFilesPath = $changes->getUpdatedFiles();
$pathString = implode($updatedFilesPath);
$reader = Reader::createFromPath($pathString);
}
elseif(!empty($changes->getNewFiles())){
$newFilesPath = $changes->getNewFiles();
$pathString = implode($newFilesPath);
$reader = Reader::createFromPath($pathString);
}
else{
return;
}
$results = $reader->fetchAssoc();