CDirectoryCacheDependency
| Пакет | system.caching.dependencies |
|---|---|
| Наследование | class CDirectoryCacheDependency » CCacheDependency » CComponent |
| Реализует | ICacheDependency |
| С версии | 1.0 |
| Исходный код | framework/caching/dependencies/CDirectoryCacheDependency.php |
CDirectoryCacheDependency выполняет проверку зависимости на основе времени изменения файлов, содержащихся в указанной директории. Проверяемая директория задается через directory.
По умолчанию проверяются все файлы в указанной директории и ее поддиректориях. Если время последнего изменения любого из них изменилось или количество файлов в директории отличается, зависимость считается измененной. Указав recursiveLevel, можно ограничить проверку определенной глубиной вложенности директорий.
Обратите внимание, что проверка зависимости для директории ресурсоемка, так как она включает доступ к времени изменения множества файлов в директории.
Общественные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| dependentData | mixed | данные, используемые для определения изменения зависимости. | CCacheDependency |
| directory | string | директория, изменение которой используется для определения изменения зависимости. | CDirectoryCacheDependency |
| hasChanged | boolean | была ли изменена зависимость. | CCacheDependency |
| namePattern | string | регулярное выражение, сопоставляющее допустимые имена файлов/директорий. | CDirectoryCacheDependency |
| recursiveLevel | integer | глубина поддиректорий для рекурсивной проверки. | CDirectoryCacheDependency |
| reuseDependentData | boolean | Можно ли повторно использовать эту зависимость. | CCacheDependency |
Общественные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод с заданным именем, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CDirectoryCacheDependency |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение по его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик события к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующего обработчика событий. | CComponent |
| disableBehavior() | Отключает прикрепленное поведение. | CComponent |
| disableBehaviors() | Отключает все прикрепленные поведения компонента. | CComponent |
| enableBehavior() | Включает прикрепленное поведение. | CComponent |
| enableBehaviors() | Включает все прикрепленные поведения компонента. | CComponent |
| evaluateDependency() | Оценивает зависимость, генерируя и сохраняя данные, связанные с зависимостью. | CCacheDependency |
| evaluateExpression() | Вычисляет PHP выражение или обратный вызов в контексте этого компонента. | CComponent |
| getDependentData() | Возвращает данные, используемые для определения изменения зависимости. Эти данные доступны после вызова evaluateDependency. | CCacheDependency |
| getEventHandlers() | Возвращает список прикрепленных обработчиков событий для события. | CComponent |
| getHasChanged() | Возвращает, была ли изменена зависимость. | CCacheDependency |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли прикрепленные обработчики для события с заданным именем. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Вызывает событие. | CComponent |
| resetReusableData() | Сбрасывает кэшированные данные для повторно используемых зависимостей. | CCacheDependency |
Защищенные методы
| Метод | Описание | Определено |
|---|---|---|
| generateDependentData() | Генерирует данные, необходимые для определения изменения зависимости. | CDirectoryCacheDependency |
| generateTimestamps() | Определяет время последнего изменения для файлов в директории. | CDirectoryCacheDependency |
| validateDirectory() | Проверяет, нужно ли проверять указанную поддиректорию на предмет зависимости. | CDirectoryCacheDependency |
| validateFile() | Проверяет, нужно ли проверять файл на предмет зависимости. | CDirectoryCacheDependency |
Подробное описание свойств
directory свойство
public string $directory;
директория, изменение которой используется для определения, была ли изменена зависимость. Если любой из файлов в директории изменен, зависимость считается изменённой.
namePattern свойство
public string $namePattern;
регулярное выражение для сопоставления допустимых имён файлов/каталогов. Только соответствующие файлы или каталоги будут проверяться на изменения. По умолчанию равно null, что означает, что все файлы/каталоги подходят.
recursiveLevel свойство
public integer $recursiveLevel;
глубина вложенных каталогов, которые необходимо проверять рекурсивно. Если значение меньше 0, это означает неограниченную глубину. Если значение равно 0, это означает проверку файлов непосредственно в указанном каталоге.
Подробное описание методов
__construct() метод
public void __construct(string $directory=NULL) | ||
| $directory | строка | каталог, который необходимо проверить |
public function __construct($directory=null)
{
$this->directory=$directory;
}
Конструктор.
generateDependentData() метод
protected mixed generateDependentData() | ||
| {return} | смешанный тип | данные, необходимые для определения, было ли изменено зависимость. |
protected function generateDependentData()
{
if($this->directory!==null)
return $this->generateTimestamps($this->directory);
else
throw new CException(Yii::t('yii','CDirectoryCacheDependency.directory cannot be empty.'));
}
Генерирует данные, необходимые для определения, было ли изменено зависимость. Этот метод возвращает отметки времени последнего изменения файлов в каталоге.
generateTimestamps() метод
protected array generateTimestamps(string $directory, integer $level=0) | ||
| $directory | строка | имя каталога |
| $level | целое число | уровень рекурсии |
| {return} | массив | список отметок времени последнего изменения файлов, индексированный по пути к файлу |
protected function generateTimestamps($directory,$level=0)
{
if(($dir=@opendir($directory))===false)
throw new CException(Yii::t('yii','"{path}" is not a valid directory.',
array('{path}'=>$directory)));
$timestamps=array();
while(($file=readdir($dir))!==false)
{
$path=$directory.DIRECTORY_SEPARATOR.$file;
if($file==='.' || $file==='..')
continue;
if($this->namePattern!==null && !preg_match($this->namePattern,$file))
continue;
if(is_file($path))
{
if($this->validateFile($path))
$timestamps[$path]=filemtime($path);
}
else
{
if(($this->recursiveLevel<0 || $level<$this->recursiveLevel) && $this->validateDirectory($path))
$timestamps=array_merge($timestamps, $this->generateTimestamps($path,$level+1));
}
}
closedir($dir);
return $timestamps;
}
Определяет время последнего изменения файлов в каталоге. Этот метод может рекурсивно входить во вложенные каталоги, если recursiveLevel не равно 0.
validateDirectory() метод
protected boolean validateDirectory(string $directory) | ||
| $directory | строка | имя вложенного каталога, который может быть проверен на зависимость. |
| {return} | логическое значение | следует ли проверять этот вложенный каталог. |
protected function validateDirectory($directory)
{
return true;
}
Проверяет, следует ли проверять указанный вложенный каталог на зависимость. Этот метод вызывается при проверке зависимости всего каталога. По умолчанию он всегда возвращает true, что означает, что вложенный каталог следует проверять. Вы можете переопределить этот метод, чтобы проверять только определённые вложенные каталоги.
validateFile() метод
protected boolean validateFile(string $fileName) | ||
| $fileName | строка | имя файла, который может быть проверен на зависимость. |
| {return} | логическое значение | следует ли проверять этот файл. |
protected function validateFile($fileName)
{
return true;
}
Проверяет, следует ли проверять файл на зависимость. Этот метод вызывается при проверке зависимости всего каталога. По умолчанию он всегда возвращает true, что означает, что файл следует проверять. Вы можете переопределить этот метод, чтобы проверять только определённые файлы.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDirectoryCacheDependency