From ba03d8f32a7ad4f375613a250f39e6de5de8ad6d Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Fri, 8 Mar 2019 22:27:29 +0100 Subject: [PATCH] Move CacheDependency classes to own files Change-Id: Icacf36674f10fa19a09499d68d596d5e2cc235f0 --- .phpcs.xml | 2 - autoload.php | 12 +- includes/cache/dependency/CacheDependency.php | 38 ++++ .../cache/dependency/ConstantDependency.php | 42 +++++ .../DependencyWrapper.php} | 163 ------------------ includes/cache/dependency/FileDependency.php | 96 +++++++++++ .../cache/dependency/GlobalDependency.php | 46 +++++ .../cache/dependency/MainConfigDependency.php | 51 ++++++ 8 files changed, 279 insertions(+), 171 deletions(-) create mode 100644 includes/cache/dependency/CacheDependency.php create mode 100644 includes/cache/dependency/ConstantDependency.php rename includes/cache/{CacheDependency.php => dependency/DependencyWrapper.php} (53%) create mode 100644 includes/cache/dependency/FileDependency.php create mode 100644 includes/cache/dependency/GlobalDependency.php create mode 100644 includes/cache/dependency/MainConfigDependency.php diff --git a/.phpcs.xml b/.phpcs.xml index 5a639adb99..171cfaf63e 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -74,7 +74,6 @@ */includes/RevisionList\.php */includes/installer/PhpBugTests\.php */includes/specials/SpecialMostinterwikis\.php - */includes/cache/CacheDependency\.php */includes/compat/XMPReader\.php */includes/diff/DairikiDiff\.php */includes/specials/SpecialAncientpages\.php @@ -213,7 +212,6 @@ */includes/api/ApiMessage\.php */includes/api/ApiOpenSearch\.php */includes/api/ApiRsd\.php - */includes/cache/CacheDependency\.php */includes/compat/XMPReader\.php */includes/diff/DairikiDiff\.php */includes/diff/DiffEngine\.php diff --git a/autoload.php b/autoload.php index be377373e9..403b61026d 100644 --- a/autoload.php +++ b/autoload.php @@ -217,7 +217,7 @@ $wgAutoloadLocalClasses = [ 'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php', 'CLIParser' => __DIR__ . '/maintenance/parse.php', 'CSSMin' => __DIR__ . '/includes/libs/CSSMin.php', - 'CacheDependency' => __DIR__ . '/includes/cache/CacheDependency.php', + 'CacheDependency' => __DIR__ . '/includes/cache/dependency/CacheDependency.php', 'CacheHelper' => __DIR__ . '/includes/cache/CacheHelper.php', 'CacheTime' => __DIR__ . '/includes/parser/CacheTime.php', 'CachedAction' => __DIR__ . '/includes/actions/CachedAction.php', @@ -303,7 +303,7 @@ $wgAutoloadLocalClasses = [ 'ConfigException' => __DIR__ . '/includes/config/ConfigException.php', 'ConfigFactory' => __DIR__ . '/includes/config/ConfigFactory.php', 'ConfiguredReadOnlyMode' => __DIR__ . '/includes/ConfiguredReadOnlyMode.php', - 'ConstantDependency' => __DIR__ . '/includes/cache/CacheDependency.php', + 'ConstantDependency' => __DIR__ . '/includes/cache/dependency/ConstantDependency.php', 'Content' => __DIR__ . '/includes/content/Content.php', 'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php', 'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php', @@ -387,7 +387,7 @@ $wgAutoloadLocalClasses = [ 'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php', 'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php', 'DeletedContributionsPage' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php', - 'DependencyWrapper' => __DIR__ . '/includes/cache/CacheDependency.php', + 'DependencyWrapper' => __DIR__ . '/includes/cache/dependency/DependencyWrapper.php', 'DeprecatedGlobal' => __DIR__ . '/includes/DeprecatedGlobal.php', 'DeprecatedInterfaceFinder' => __DIR__ . '/maintenance/findDeprecated.php', 'DeprecationHelper' => __DIR__ . '/includes/debug/DeprecationHelper.php', @@ -519,7 +519,7 @@ $wgAutoloadLocalClasses = [ 'FileContentHandler' => __DIR__ . '/includes/content/FileContentHandler.php', 'FileContentsHasher' => __DIR__ . '/includes/utils/FileContentsHasher.php', 'FileDeleteForm' => __DIR__ . '/includes/FileDeleteForm.php', - 'FileDependency' => __DIR__ . '/includes/cache/CacheDependency.php', + 'FileDependency' => __DIR__ . '/includes/cache/dependency/FileDependency.php', 'FileDuplicateSearchPage' => __DIR__ . '/includes/specials/SpecialFileDuplicateSearch.php', 'FileJournal' => __DIR__ . '/includes/libs/filebackend/filejournal/FileJournal.php', 'FileOp' => __DIR__ . '/includes/libs/filebackend/fileop/FileOp.php', @@ -569,7 +569,7 @@ $wgAutoloadLocalClasses = [ 'GetReplicaServer' => __DIR__ . '/maintenance/getReplicaServer.php', 'GetTextMaint' => __DIR__ . '/maintenance/getText.php', 'GitInfo' => __DIR__ . '/includes/GitInfo.php', - 'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php', + 'GlobalDependency' => __DIR__ . '/includes/cache/dependency/GlobalDependency.php', 'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php', 'GuzzleHttpRequest' => __DIR__ . '/includes/http/GuzzleHttpRequest.php', 'HHVMMakeRepo' => __DIR__ . '/maintenance/hhvm/makeRepo.php', @@ -845,7 +845,7 @@ $wgAutoloadLocalClasses = [ 'MagicWordArray' => __DIR__ . '/includes/MagicWordArray.php', 'MagicWordFactory' => __DIR__ . '/includes/MagicWordFactory.php', 'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php', - 'MainConfigDependency' => __DIR__ . '/includes/cache/CacheDependency.php', + 'MainConfigDependency' => __DIR__ . '/includes/cache/dependency/MainConfigDependency.php', 'MaintainableDBConnRef' => __DIR__ . '/includes/libs/rdbms/database/MaintainableDBConnRef.php', 'Maintenance' => __DIR__ . '/maintenance/Maintenance.php', 'MakeTestEdits' => __DIR__ . '/maintenance/makeTestEdits.php', diff --git a/includes/cache/dependency/CacheDependency.php b/includes/cache/dependency/CacheDependency.php new file mode 100644 index 0000000000..2e4711f1ba --- /dev/null +++ b/includes/cache/dependency/CacheDependency.php @@ -0,0 +1,38 @@ +name = $name; + $this->value = constant( $name ); + } + + /** + * @return bool + */ + function isExpired() { + return constant( $this->name ) != $this->value; + } +} diff --git a/includes/cache/CacheDependency.php b/includes/cache/dependency/DependencyWrapper.php similarity index 53% rename from includes/cache/CacheDependency.php rename to includes/cache/dependency/DependencyWrapper.php index 11df5bcffc..43d659c087 100644 --- a/includes/cache/CacheDependency.php +++ b/includes/cache/dependency/DependencyWrapper.php @@ -20,7 +20,6 @@ * @file * @ingroup Cache */ -use MediaWiki\MediaWikiServices; /** * This class stores an arbitrary value along with its dependencies. @@ -129,165 +128,3 @@ class DependencyWrapper { return $value; } } - -/** - * @ingroup Cache - */ -abstract class CacheDependency { - /** - * Returns true if the dependency is expired, false otherwise - */ - abstract function isExpired(); - - /** - * Hook to perform any expensive pre-serialize loading of dependency values. - */ - function loadDependencyValues() { - } -} - -/** - * @ingroup Cache - */ -class FileDependency extends CacheDependency { - private $filename; - private $timestamp; - - /** - * Create a file dependency - * - * @param string $filename The name of the file, preferably fully qualified - * @param null|bool|int $timestamp The unix last modified timestamp, or false if the - * file does not exist. If omitted, the timestamp will be loaded from - * the file. - * - * A dependency on a nonexistent file will be triggered when the file is - * created. A dependency on an existing file will be triggered when the - * file is changed. - */ - function __construct( $filename, $timestamp = null ) { - $this->filename = $filename; - $this->timestamp = $timestamp; - } - - /** - * @return array - */ - function __sleep() { - $this->loadDependencyValues(); - - return [ 'filename', 'timestamp' ]; - } - - function loadDependencyValues() { - if ( is_null( $this->timestamp ) ) { - Wikimedia\suppressWarnings(); - # Dependency on a non-existent file stores "false" - # This is a valid concept! - $this->timestamp = filemtime( $this->filename ); - Wikimedia\restoreWarnings(); - } - } - - /** - * @return bool - */ - function isExpired() { - Wikimedia\suppressWarnings(); - $lastmod = filemtime( $this->filename ); - Wikimedia\restoreWarnings(); - if ( $lastmod === false ) { - if ( $this->timestamp === false ) { - # Still nonexistent - return false; - } else { - # Deleted - wfDebug( "Dependency triggered: {$this->filename} deleted.\n" ); - - return true; - } - } else { - if ( $lastmod > $this->timestamp ) { - # Modified or created - wfDebug( "Dependency triggered: {$this->filename} changed.\n" ); - - return true; - } else { - # Not modified - return false; - } - } - } -} - -/** - * @ingroup Cache - */ -class GlobalDependency extends CacheDependency { - private $name; - private $value; - - function __construct( $name ) { - $this->name = $name; - $this->value = $GLOBALS[$name]; - } - - /** - * @return bool - */ - function isExpired() { - if ( !isset( $GLOBALS[$this->name] ) ) { - return true; - } - - return $GLOBALS[$this->name] != $this->value; - } -} - -/** - * @ingroup Cache - */ -class MainConfigDependency extends CacheDependency { - private $name; - private $value; - - function __construct( $name ) { - $this->name = $name; - $this->value = $this->getConfig()->get( $this->name ); - } - - private function getConfig() { - return MediaWikiServices::getInstance()->getMainConfig(); - } - - /** - * @return bool - */ - function isExpired() { - if ( !$this->getConfig()->has( $this->name ) ) { - return true; - } - - return $this->getConfig()->get( $this->name ) != $this->value; - } -} - -/** - * @ingroup Cache - */ -class ConstantDependency extends CacheDependency { - private $name; - private $value; - - function __construct( $name ) { - $this->name = $name; - $this->value = constant( $name ); - } - - /** - * @return bool - */ - function isExpired() { - return constant( $this->name ) != $this->value; - } -} diff --git a/includes/cache/dependency/FileDependency.php b/includes/cache/dependency/FileDependency.php new file mode 100644 index 0000000000..8d199e2c78 --- /dev/null +++ b/includes/cache/dependency/FileDependency.php @@ -0,0 +1,96 @@ +filename = $filename; + $this->timestamp = $timestamp; + } + + /** + * @return array + */ + function __sleep() { + $this->loadDependencyValues(); + + return [ 'filename', 'timestamp' ]; + } + + function loadDependencyValues() { + if ( is_null( $this->timestamp ) ) { + Wikimedia\suppressWarnings(); + # Dependency on a non-existent file stores "false" + # This is a valid concept! + $this->timestamp = filemtime( $this->filename ); + Wikimedia\restoreWarnings(); + } + } + + /** + * @return bool + */ + function isExpired() { + Wikimedia\suppressWarnings(); + $lastmod = filemtime( $this->filename ); + Wikimedia\restoreWarnings(); + if ( $lastmod === false ) { + if ( $this->timestamp === false ) { + # Still nonexistent + return false; + } else { + # Deleted + wfDebug( "Dependency triggered: {$this->filename} deleted.\n" ); + + return true; + } + } else { + if ( $lastmod > $this->timestamp ) { + # Modified or created + wfDebug( "Dependency triggered: {$this->filename} changed.\n" ); + + return true; + } else { + # Not modified + return false; + } + } + } +} diff --git a/includes/cache/dependency/GlobalDependency.php b/includes/cache/dependency/GlobalDependency.php new file mode 100644 index 0000000000..be1d34548c --- /dev/null +++ b/includes/cache/dependency/GlobalDependency.php @@ -0,0 +1,46 @@ +name = $name; + $this->value = $GLOBALS[$name]; + } + + /** + * @return bool + */ + function isExpired() { + if ( !isset( $GLOBALS[$this->name] ) ) { + return true; + } + + return $GLOBALS[$this->name] != $this->value; + } +} diff --git a/includes/cache/dependency/MainConfigDependency.php b/includes/cache/dependency/MainConfigDependency.php new file mode 100644 index 0000000000..dd33a2e202 --- /dev/null +++ b/includes/cache/dependency/MainConfigDependency.php @@ -0,0 +1,51 @@ +name = $name; + $this->value = $this->getConfig()->get( $this->name ); + } + + private function getConfig() { + return MediaWikiServices::getInstance()->getMainConfig(); + } + + /** + * @return bool + */ + function isExpired() { + if ( !$this->getConfig()->has( $this->name ) ) { + return true; + } + + return $this->getConfig()->get( $this->name ) != $this->value; + } +} -- 2.20.1