PHP Class Neos\Flow\Monitor\FileMonitor

Show file Open project: neos/flow-development-collection Class Usage Examples

Protected Properties

Property Type Description
$cache Neos\Cache\Frontend\StringFrontend
$changeDetectionStrategy Neos\Flow\Monitor\ChangeDetectionStrategy\ChangeDetectionStrategyInterface
$changedFiles array Changed files for this monitor
$changedPaths array The changed paths for this monitor
$directoriesAndFiles array Array of directories and files that were cached on the last run.
$identifier string
$monitoredDirectories array
$monitoredFiles array
$signalDispatcher Neos\Flow\SignalSlot\Dispatcher
$systemLogger Neos\Flow\Log\SystemLoggerInterface

Public Methods

Method Description
__construct ( string $identifier ) Constructs this file monitor
createFileMonitorAtBoot ( string $identifier, Bootstrap $bootstrap ) : FileMonitor Helper method to create a FileMonitor instance during boot sequence as injections have to be done manually.
detectChanges ( ) : void Detects changes of the files and directories to be monitored and emits signals accordingly.
getIdentifier ( ) : string Returns the identifier of this monitor
getMonitoredDirectories ( ) : array Returns a list of all monitored directories
getMonitoredFiles ( ) : array Returns a list of all monitored files
injectCache ( StringFrontend $cache ) : void Injects the Flow_Monitor cache
injectChangeDetectionStrategy ( Neos\Flow\Monitor\ChangeDetectionStrategy\ChangeDetectionStrategyInterface $changeDetectionStrategy ) : void Injects the Change Detection Strategy
injectSignalDispatcher ( Dispatcher $signalDispatcher ) : void Injects the Singal Slot Dispatcher because classes of the Monitor subpackage cannot be proxied by the AOP framework because it is not initialized at the time the monitoring is used.
injectSystemLogger ( Neos\Flow\Log\SystemLoggerInterface $systemLogger ) : void Injects the system logger
monitorDirectory ( string $path, string $filenamePattern = null ) : void Adds the specified directory to the list of directories to be monitored.
monitorFile ( string $pathAndFilename ) : void Adds the specified file to the list of files to be monitored.
shutdownObject ( ) : void Caches the directories and their files

Protected Methods

Method Description
detectChangedFiles ( array $pathAndFilenames ) : array Detects changes in the given list of files and emits signals if necessary.
detectChangesOnPath ( string $path, string $filenamePattern ) : boolean Detect changes for one of the monitored paths.
emitDirectoriesHaveChanged ( string $monitorIdentifier, array $changedDirectories ) : void Signalizes that the specified directory has changed
emitFilesHaveChanged ( string $monitorIdentifier, array $changedFiles ) : void Signalizes that the specified file has changed
loadDetectedDirectoriesAndFiles ( ) : void Loads the last detected files for this monitor.
readMonitoredDirectoryRecursively ( string $path, string $filenamePattern ) : Generator Read a monitored directory recursively, taking into account filename patterns
saveDetectedDirectoriesAndFiles ( ) : void Store the changed directories and files back to the cache.
setDetectedFilesForPath ( string $path, array $files ) : void

Method Details

__construct() public method

Constructs this file monitor
public __construct ( string $identifier )
$identifier string Name of this specific file monitor - will be used in the signals emitted by this monitor.

createFileMonitorAtBoot() public static method

Helper method to create a FileMonitor instance during boot sequence as injections have to be done manually.
public static createFileMonitorAtBoot ( string $identifier, Bootstrap $bootstrap ) : FileMonitor
$identifier string
$bootstrap Neos\Flow\Core\Bootstrap
return FileMonitor

detectChangedFiles() protected method

Detects changes in the given list of files and emits signals if necessary.
protected detectChangedFiles ( array $pathAndFilenames ) : array
$pathAndFilenames array A list of full path and filenames of files to check
return array An array of changed files (key = path and filenmae) and their status (value)

detectChanges() public method

Detects changes of the files and directories to be monitored and emits signals accordingly.
public detectChanges ( ) : void
return void

detectChangesOnPath() protected method

Detect changes for one of the monitored paths.
protected detectChangesOnPath ( string $path, string $filenamePattern ) : boolean
$path string
$filenamePattern string
return boolean TRUE if any changes were detected in this path

emitDirectoriesHaveChanged() protected method

Signalizes that the specified directory has changed
protected emitDirectoriesHaveChanged ( string $monitorIdentifier, array $changedDirectories ) : void
$monitorIdentifier string Name of the monitor which detected the change
$changedDirectories array An array of changed directories (key = path) and their status (value)
return void

emitFilesHaveChanged() protected method

Signalizes that the specified file has changed
protected emitFilesHaveChanged ( string $monitorIdentifier, array $changedFiles ) : void
$monitorIdentifier string Name of the monitor which detected the change
$changedFiles array An array of changed files (key = path and filename) and their status (value)
return void

getIdentifier() public method

Returns the identifier of this monitor
public getIdentifier ( ) : string
return string

getMonitoredDirectories() public method

Returns a list of all monitored directories
public getMonitoredDirectories ( ) : array
return array A list of paths of monitored directories

getMonitoredFiles() public method

Returns a list of all monitored files
public getMonitoredFiles ( ) : array
return array A list of paths and filenames of monitored files

injectCache() public method

Injects the Flow_Monitor cache
public injectCache ( StringFrontend $cache ) : void
$cache Neos\Cache\Frontend\StringFrontend
return void

injectChangeDetectionStrategy() public method

Injects the Change Detection Strategy
public injectChangeDetectionStrategy ( Neos\Flow\Monitor\ChangeDetectionStrategy\ChangeDetectionStrategyInterface $changeDetectionStrategy ) : void
$changeDetectionStrategy Neos\Flow\Monitor\ChangeDetectionStrategy\ChangeDetectionStrategyInterface The strategy to use for detecting changes
return void

injectSignalDispatcher() public method

Injects the Singal Slot Dispatcher because classes of the Monitor subpackage cannot be proxied by the AOP framework because it is not initialized at the time the monitoring is used.
public injectSignalDispatcher ( Dispatcher $signalDispatcher ) : void
$signalDispatcher Neos\Flow\SignalSlot\Dispatcher The Signal Slot Dispatcher
return void

injectSystemLogger() public method

Injects the system logger
public injectSystemLogger ( Neos\Flow\Log\SystemLoggerInterface $systemLogger ) : void
$systemLogger Neos\Flow\Log\SystemLoggerInterface
return void

loadDetectedDirectoriesAndFiles() protected method

Loads the last detected files for this monitor.
protected loadDetectedDirectoriesAndFiles ( ) : void
return void

monitorDirectory() public method

All files in these directories will be monitored too.
public monitorDirectory ( string $path, string $filenamePattern = null ) : void
$path string Absolute path of the directory to monitor
$filenamePattern string A pattern for filenames to consider for file monitoring (regular expression)
return void

monitorFile() public method

The file in question does not necessarily have to exist.
public monitorFile ( string $pathAndFilename ) : void
$pathAndFilename string Absolute path and filename of the file to monitor
return void

readMonitoredDirectoryRecursively() protected method

Read a monitored directory recursively, taking into account filename patterns
protected readMonitoredDirectoryRecursively ( string $path, string $filenamePattern ) : Generator
$path string The path of a monitored directory
$filenamePattern string
return Generator

saveDetectedDirectoriesAndFiles() protected method

Store the changed directories and files back to the cache.
protected saveDetectedDirectoriesAndFiles ( ) : void
return void

setDetectedFilesForPath() protected method

protected setDetectedFilesForPath ( string $path, array $files ) : void
$path string
$files array
return void

shutdownObject() public method

Caches the directories and their files
public shutdownObject ( ) : void
return void

Property Details

$cache protected property

protected StringFrontend,Neos\Cache\Frontend $cache
return Neos\Cache\Frontend\StringFrontend

$changeDetectionStrategy protected property

protected ChangeDetectionStrategyInterface,Neos\Flow\Monitor\ChangeDetectionStrategy $changeDetectionStrategy
return Neos\Flow\Monitor\ChangeDetectionStrategy\ChangeDetectionStrategyInterface

$changedFiles protected property

Changed files for this monitor
protected array $changedFiles
return array

$changedPaths protected property

The changed paths for this monitor
protected array $changedPaths
return array

$directoriesAndFiles protected property

Array of directories and files that were cached on the last run.
protected array $directoriesAndFiles
return array

$identifier protected property

protected string $identifier
return string

$monitoredDirectories protected property

protected array $monitoredDirectories
return array

$monitoredFiles protected property

protected array $monitoredFiles
return array

$signalDispatcher protected property

protected Dispatcher,Neos\Flow\SignalSlot $signalDispatcher
return Neos\Flow\SignalSlot\Dispatcher

$systemLogger protected property

protected SystemLoggerInterface,Neos\Flow\Log $systemLogger
return Neos\Flow\Log\SystemLoggerInterface