Phantom42 has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/405536 )
Change subject: Fix multiple PHP class declarations in one file in
includes/cache
......................................................................
Fix multiple PHP class declarations in one file in includes/cache
All files containing more than one PHP class were splitted into
multiple files. Autoloader references were updated to match new
class location.
Bug: T177809
Change-Id: Id89ef7f71156139c9e920f319a75b7ffb0bdc4e3
---
M autoload.php
M includes/cache/CacheDependency.php
A includes/cache/ConstantDependency.php
A includes/cache/DependencyWrapper.php
A includes/cache/FileDependency.php
A includes/cache/GlobalDependency.php
A includes/cache/MainConfigDependency.php
7 files changed, 374 insertions(+), 259 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/36/405536/1
diff --git a/autoload.php b/autoload.php
index 9e557e1..b3556e1 100644
--- a/autoload.php
+++ b/autoload.php
@@ -294,7 +294,7 @@
'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/ConstantDependency.php',
'Content' => __DIR__ . '/includes/content/Content.php',
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelLogFormatter' => __DIR__ .
'/includes/logging/ContentModelLogFormatter.php',
@@ -372,7 +372,7 @@
'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/DependencyWrapper.php',
'DeprecatedGlobal' => __DIR__ . '/includes/DeprecatedGlobal.php',
'DeprecatedInterfaceFinder' => __DIR__ .
'/maintenance/findDeprecated.php',
'DerivativeContext' => __DIR__ .
'/includes/context/DerivativeContext.php',
@@ -498,7 +498,7 @@
'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/FileDependency.php',
'FileDuplicateSearchPage' => __DIR__ .
'/includes/specials/SpecialFileDuplicateSearch.php',
'FileJournal' => __DIR__ .
'/includes/libs/filebackend/filejournal/FileJournal.php',
'FileOp' => __DIR__ . '/includes/libs/filebackend/fileop/FileOp.php',
@@ -546,7 +546,7 @@
'GetSlaveServer' => __DIR__ . '/maintenance/getReplicaServer.php',
'GetTextMaint' => __DIR__ . '/maintenance/getText.php',
'GitInfo' => __DIR__ . '/includes/GitInfo.php',
- 'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'GlobalDependency' => __DIR__ . '/includes/cache/GlobalDependency.php',
'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php',
'HHVMMakeRepo' => __DIR__ . '/maintenance/hhvm/makeRepo.php',
'HTMLApiField' => __DIR__ .
'/includes/htmlform/fields/HTMLApiField.php',
@@ -813,7 +813,7 @@
'MagicWord' => __DIR__ . '/includes/MagicWord.php',
'MagicWordArray' => __DIR__ . '/includes/MagicWordArray.php',
'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php',
- 'MainConfigDependency' => __DIR__ .
'/includes/cache/CacheDependency.php',
+ 'MainConfigDependency' => __DIR__ .
'/includes/cache/MainConfigDependency.php',
'MaintainableDBConnRef' => __DIR__ .
'/includes/libs/rdbms/database/MaintainableDBConnRef.php',
'Maintenance' => __DIR__ . '/maintenance/Maintenance.php',
'MaintenanceFormatInstallDoc' => __DIR__ .
'/maintenance/formatInstallDoc.php',
diff --git a/includes/cache/CacheDependency.php
b/includes/cache/CacheDependency.php
index 32dc8c0..479aa97 100644
--- a/includes/cache/CacheDependency.php
+++ b/includes/cache/CacheDependency.php
@@ -23,114 +23,6 @@
use MediaWiki\MediaWikiServices;
/**
- * This class stores an arbitrary value along with its dependencies.
- * Users should typically only use DependencyWrapper::getValueFromCache(),
- * rather than instantiating one of these objects directly.
- * @ingroup Cache
- */
-class DependencyWrapper {
- private $value;
- /** @var CacheDependency[] */
- private $deps;
-
- /**
- * @param mixed $value The user-supplied value
- * @param CacheDependency|CacheDependency[] $deps A dependency or
dependency
- * array. All dependencies must be objects implementing
CacheDependency.
- */
- function __construct( $value = false, $deps = [] ) {
- $this->value = $value;
-
- if ( !is_array( $deps ) ) {
- $deps = [ $deps ];
- }
-
- $this->deps = $deps;
- }
-
- /**
- * Returns true if any of the dependencies have expired
- *
- * @return bool
- */
- function isExpired() {
- foreach ( $this->deps as $dep ) {
- if ( $dep->isExpired() ) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Initialise dependency values in preparation for storing. This must be
- * called before serialization.
- */
- function initialiseDeps() {
- foreach ( $this->deps as $dep ) {
- $dep->loadDependencyValues();
- }
- }
-
- /**
- * Get the user-defined value
- * @return bool|mixed
- */
- function getValue() {
- return $this->value;
- }
-
- /**
- * Store the wrapper to a cache
- *
- * @param BagOStuff $cache
- * @param string $key
- * @param int $expiry
- */
- function storeToCache( $cache, $key, $expiry = 0 ) {
- $this->initialiseDeps();
- $cache->set( $key, $this, $expiry );
- }
-
- /**
- * Attempt to get a value from the cache. If the value is expired or
missing,
- * it will be generated with the callback function (if present), and
the newly
- * calculated value will be stored to the cache in a wrapper.
- *
- * @param BagOStuff $cache
- * @param string $key The cache key
- * @param int $expiry The expiry timestamp or interval in seconds
- * @param bool|callable $callback The callback for generating the
value, or false
- * @param array $callbackParams The function parameters for the callback
- * @param array $deps The dependencies to store on a cache miss. Note:
these
- * are not the dependencies used on a cache hit! Cache hits use the
stored
- * dependency array.
- *
- * @return mixed The value, or null if it was not present in the cache
and no
- * callback was defined.
- */
- static function getValueFromCache( $cache, $key, $expiry = 0, $callback
= false,
- $callbackParams = [], $deps = []
- ) {
- $obj = $cache->get( $key );
-
- if ( is_object( $obj ) && $obj instanceof DependencyWrapper &&
!$obj->isExpired() ) {
- $value = $obj->value;
- } elseif ( $callback ) {
- $value = call_user_func_array( $callback,
$callbackParams );
- # Cache the newly-generated value
- $wrapper = new DependencyWrapper( $value, $deps );
- $wrapper->storeToCache( $cache, $key, $expiry );
- } else {
- $value = null;
- }
-
- return $value;
- }
-}
-
-/**
* @ingroup Cache
*/
abstract class CacheDependency {
@@ -143,151 +35,5 @@
* 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 ) ) {
- MediaWiki\suppressWarnings();
- # Dependency on a non-existent file stores "false"
- # This is a valid concept!
- $this->timestamp = filemtime( $this->filename );
- MediaWiki\restoreWarnings();
- }
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- MediaWiki\suppressWarnings();
- $lastmod = filemtime( $this->filename );
- MediaWiki\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/ConstantDependency.php
b/includes/cache/ConstantDependency.php
new file mode 100644
index 0000000..f6779d9
--- /dev/null
+++ b/includes/cache/ConstantDependency.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Constant dependency for data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+use MediaWiki\MediaWikiServices;
+
+/**
+ * @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/DependencyWrapper.php
b/includes/cache/DependencyWrapper.php
new file mode 100644
index 0000000..dad39ab
--- /dev/null
+++ b/includes/cache/DependencyWrapper.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * Dependency wrapper for data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+use MediaWiki\MediaWikiServices;
+
+/**
+ * This class stores an arbitrary value along with its dependencies.
+ * Users should typically only use DependencyWrapper::getValueFromCache(),
+ * rather than instantiating one of these objects directly.
+ * @ingroup Cache
+ */
+class DependencyWrapper {
+ private $value;
+ /** @var CacheDependency[] */
+ private $deps;
+
+ /**
+ * @param mixed $value The user-supplied value
+ * @param CacheDependency|CacheDependency[] $deps A dependency or
dependency
+ * array. All dependencies must be objects implementing
CacheDependency.
+ */
+ function __construct( $value = false, $deps = [] ) {
+ $this->value = $value;
+
+ if ( !is_array( $deps ) ) {
+ $deps = [ $deps ];
+ }
+
+ $this->deps = $deps;
+ }
+
+ /**
+ * Returns true if any of the dependencies have expired
+ *
+ * @return bool
+ */
+ function isExpired() {
+ foreach ( $this->deps as $dep ) {
+ if ( $dep->isExpired() ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Initialise dependency values in preparation for storing. This must be
+ * called before serialization.
+ */
+ function initialiseDeps() {
+ foreach ( $this->deps as $dep ) {
+ $dep->loadDependencyValues();
+ }
+ }
+
+ /**
+ * Get the user-defined value
+ * @return bool|mixed
+ */
+ function getValue() {
+ return $this->value;
+ }
+
+ /**
+ * Store the wrapper to a cache
+ *
+ * @param BagOStuff $cache
+ * @param string $key
+ * @param int $expiry
+ */
+ function storeToCache( $cache, $key, $expiry = 0 ) {
+ $this->initialiseDeps();
+ $cache->set( $key, $this, $expiry );
+ }
+
+ /**
+ * Attempt to get a value from the cache. If the value is expired or
missing,
+ * it will be generated with the callback function (if present), and
the newly
+ * calculated value will be stored to the cache in a wrapper.
+ *
+ * @param BagOStuff $cache
+ * @param string $key The cache key
+ * @param int $expiry The expiry timestamp or interval in seconds
+ * @param bool|callable $callback The callback for generating the
value, or false
+ * @param array $callbackParams The function parameters for the callback
+ * @param array $deps The dependencies to store on a cache miss. Note:
these
+ * are not the dependencies used on a cache hit! Cache hits use the
stored
+ * dependency array.
+ *
+ * @return mixed The value, or null if it was not present in the cache
and no
+ * callback was defined.
+ */
+ static function getValueFromCache( $cache, $key, $expiry = 0, $callback
= false,
+ $callbackParams = [], $deps = []
+ ) {
+ $obj = $cache->get( $key );
+
+ if ( is_object( $obj ) && $obj instanceof DependencyWrapper &&
!$obj->isExpired() ) {
+ $value = $obj->value;
+ } elseif ( $callback ) {
+ $value = call_user_func_array( $callback,
$callbackParams );
+ # Cache the newly-generated value
+ $wrapper = new DependencyWrapper( $value, $deps );
+ $wrapper->storeToCache( $cache, $key, $expiry );
+ } else {
+ $value = null;
+ }
+
+ return $value;
+ }
+}
diff --git a/includes/cache/FileDependency.php
b/includes/cache/FileDependency.php
new file mode 100644
index 0000000..535a15b
--- /dev/null
+++ b/includes/cache/FileDependency.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * File dependency for data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+use MediaWiki\MediaWikiServices;
+
+/**
+ * @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 ) ) {
+ MediaWiki\suppressWarnings();
+ # Dependency on a non-existent file stores "false"
+ # This is a valid concept!
+ $this->timestamp = filemtime( $this->filename );
+ MediaWiki\restoreWarnings();
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ function isExpired() {
+ MediaWiki\suppressWarnings();
+ $lastmod = filemtime( $this->filename );
+ MediaWiki\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/GlobalDependency.php
b/includes/cache/GlobalDependency.php
new file mode 100644
index 0000000..b3fa031
--- /dev/null
+++ b/includes/cache/GlobalDependency.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Global dependency for data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+use MediaWiki\MediaWikiServices;
+
+/**
+ * @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;
+ }
+}
diff --git a/includes/cache/MainConfigDependency.php
b/includes/cache/MainConfigDependency.php
new file mode 100644
index 0000000..7e98ff9
--- /dev/null
+++ b/includes/cache/MainConfigDependency.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Main config dependency for data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+use MediaWiki\MediaWikiServices;
+
+/**
+ * @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;
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/405536
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id89ef7f71156139c9e920f319a75b7ffb0bdc4e3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Phantom42 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits