protected function detectChangesOnPath($path, $filenamePattern)
    {
        $currentDirectoryChanged = false;
        try {
            $currentSubDirectoriesAndFiles = $this->readMonitoredDirectoryRecursively($path, $filenamePattern);
        } catch (\Exception $exception) {
            $currentSubDirectoriesAndFiles = [];
            $this->changedPaths[$path] = ChangeDetectionStrategyInterface::STATUS_DELETED;
        }

        $nowDetectedFilesAndDirectories = [];
        if (!isset($this->directoriesAndFiles[$path])) {
            $this->directoriesAndFiles[$path] = [];
            $this->changedPaths[$path] = ChangeDetectionStrategyInterface::STATUS_CREATED;
        }

        foreach ($currentSubDirectoriesAndFiles as $pathAndFilename) {
            $status = $this->changeDetectionStrategy->getFileStatus($pathAndFilename);
            if ($status !== ChangeDetectionStrategyInterface::STATUS_UNCHANGED) {
                $this->changedFiles[$pathAndFilename] = $status;
                $currentDirectoryChanged = true;
            }

            if (isset($this->directoriesAndFiles[$path][$pathAndFilename])) {
                unset($this->directoriesAndFiles[$path][$pathAndFilename]);
            }
            $nowDetectedFilesAndDirectories[$pathAndFilename] = 1;
        }

        if ($this->directoriesAndFiles[$path] !== []) {
            foreach (array_keys($this->directoriesAndFiles[$path]) as $pathAndFilename) {
                $this->changedFiles[$pathAndFilename] = ChangeDetectionStrategyInterface::STATUS_DELETED;
                if ($this->changeDetectionStrategy instanceof StrategyWithMarkDeletedInterface) {
                    $this->changeDetectionStrategy->setFileDeleted($pathAndFilename);
                } else {
                    // This call is needed to mark the file deleted in any possibly existing caches of the strategy.
                    // The return value is not important as we know this file doesn't exist so we set the status to DELETED anyway.
                    $this->changeDetectionStrategy->getFileStatus($pathAndFilename);
                }
            }
            $currentDirectoryChanged = true;
        }

        if ($currentDirectoryChanged) {
            $this->setDetectedFilesForPath($path, $nowDetectedFilesAndDirectories);
        }

        return $currentDirectoryChanged;
    }
protected function detectChangesOnPath($path, $filenamePattern)
    {
        $currentDirectoryChanged = false;
        try {
            $currentSubDirectoriesAndFiles = $this->readMonitoredDirectoryRecursively($path, $filenamePattern);
        } catch (\Exception $exception) {
            $currentSubDirectoriesAndFiles = [];
            $this->changedPaths[$path] = ChangeDetectionStrategyInterface::STATUS_DELETED;
        }

        $nowDetectedFilesAndDirectories = [];
        if (!isset($this->directoriesAndFiles[$path])) {
            $this->directoriesAndFiles[$path] = [];
            $this->changedPaths[$path] = ChangeDetectionStrategyInterface::STATUS_CREATED;
        }

        foreach ($currentSubDirectoriesAndFiles as $pathAndFilename) {
            $status = $this->changeDetectionStrategy->getFileStatus($pathAndFilename);
            if ($status !== ChangeDetectionStrategyInterface::STATUS_UNCHANGED) {
                $this->changedFiles[$pathAndFilename] = $status;
                $currentDirectoryChanged = true;
            }

            if (isset($this->directoriesAndFiles[$path][$pathAndFilename])) {
                unset($this->directoriesAndFiles[$path][$pathAndFilename]);
            }
            $nowDetectedFilesAndDirectories[$pathAndFilename] = 1;
        }

        if ($this->directoriesAndFiles[$path] !== []) {
            foreach (array_keys($this->directoriesAndFiles[$path]) as $pathAndFilename) {
                $this->changedFiles[$pathAndFilename] = ChangeDetectionStrategyInterface::STATUS_DELETED;
                if ($this->changeDetectionStrategy instanceof StrategyWithMarkDeletedInterface) {
                    $this->changeDetectionStrategy->setFileDeleted($pathAndFilename);
                } else {
                    // This call is needed to mark the file deleted in any possibly existing caches of the strategy.
                    // The return value is not important as we know this file doesn't exist so we set the status to DELETED anyway.
                    $this->changeDetectionStrategy->getFileStatus($pathAndFilename);
                }
            }
            $currentDirectoryChanged = true;
        }

        if ($currentDirectoryChanged) {
            $this->setDetectedFilesForPath($path, $nowDetectedFilesAndDirectories);
        }

        return $currentDirectoryChanged;
    }
protected function detectChangesOnPath ( $ path , $ filenamePattern ) { $ currentDirectoryChanged = false ; try { $ currentSubDirectoriesAndFiles = $ this -> readMonitoredDirectoryRecursively ( $ path , $ filenamePattern ) ; } catch ( \ Exception $ exception ) { $ currentSubDirectoriesAndFiles = [ ] ; $ this -> changedPaths [ $ path ] = ChangeDetectionStrategyInterface :: STATUS_DELETED ; } $ nowDetectedFilesAndDirectories = [ ] ; if ( ! isset ( $ this -> directoriesAndFiles [ $ path ] ) ) { $ this -> directoriesAndFiles [ $ path ] = [ ] ; $ this -> changedPaths [ $ path ] = ChangeDetectionStrategyInterface :: STATUS_CREATED ; } foreach ( $ currentSubDirectoriesAndFiles as $ pathAndFilename ) { $ status = $ this -> changeDetectionStrategy -> getFileStatus ( $ pathAndFilename ) ; if ( $ status !== ChangeDetectionStrategyInterface :: STATUS_UNCHANGED ) { $ this -> changedFiles [ $ pathAndFilename ] = $ status ; $ currentDirectoryChanged = true ; } if ( isset ( $ this -> directoriesAndFiles [ $ path ] [ $ pathAndFilename ] ) ) { unset ( $ this -> directoriesAndFiles [ $ path ] [ $ pathAndFilename ] ) ; } $ nowDetectedFilesAndDirectories [ $ pathAndFilename ] = 1 ; } if ( $ this -> directoriesAndFiles [ $ path ] !== [ ] ) { foreach ( array_keys ( $ this -> directoriesAndFiles [ $ path ] ) as $ pathAndFilename ) { $ this -> changedFiles [ $ pathAndFilename ] = ChangeDetectionStrategyInterface :: STATUS_DELETED ; if ( $ this -> changeDetectionStrategy instanceof StrategyWithMarkDeletedInterface ) { $ this -> changeDetectionStrategy -> setFileDeleted ( $ pathAndFilename ) ; } else { // This call is needed to mark the file deleted in any possibly existing caches of the strategy. // The return value is not important as we know this file doesn't exist so we set the status to DELETED anyway. $ this -> changeDetectionStrategy -> getFileStatus ( $ pathAndFilename ) ; } } $ currentDirectoryChanged = true ; } if ( $ currentDirectoryChanged ) { $ this -> setDetectedFilesForPath ( $ path , $ nowDetectedFilesAndDirectories ) ; } return $ currentDirectoryChanged ; }
Detect changes for one of the monitored paths.

@param string $path
@param string $filenamePattern
@return boolean true if any changes were detected in this path
Detect changes for one of the monitored paths .