We will soon be converting $wgUser to be a stub object wrapping a User, and we want to be able to access the public properties of that object (doing so will still trigger deprecation warnings, but it won't break). This will also work for non-existent properties that are handled via the __get() and __set() methods of whatever inner object the StubObject is wrapping. Bug: T267861 Change-Id: I4c29c615bcb107d4ef8bf4b8e48db2ecf863e5f7
61 lines
2.1 KiB
PHP
61 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Delayed loading of deprecated global objects.
|
|
*
|
|
* 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
|
|
*/
|
|
|
|
/**
|
|
* Class to allow throwing wfDeprecated warnings
|
|
* when people use globals that we do not want them to.
|
|
*/
|
|
class DeprecatedGlobal extends StubObject {
|
|
protected $version;
|
|
|
|
/**
|
|
* @param string $name Global name
|
|
* @param callable|string $callback Factory function or class name to construct
|
|
* @param string|false $version Version global was deprecated in
|
|
*/
|
|
public function __construct( $name, $callback, $version = false ) {
|
|
parent::__construct( $name, $callback );
|
|
$this->version = $version;
|
|
}
|
|
|
|
// phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
|
|
public function _newObject() {
|
|
/*
|
|
* Put the caller offset for wfDeprecated as 6, as
|
|
* that gives the function that uses this object, since:
|
|
*
|
|
* 1 = this function ( _newObject )
|
|
* 2 = StubObject::_unstub
|
|
* 3 = StubObject::_call
|
|
* 4 = StubObject::__call
|
|
* 5 = DeprecatedGlobal::<method of global called>
|
|
* 6 = Actual function using the global.
|
|
* (the same applies to _get/__get or _set/__set instead of _call/__call)
|
|
*
|
|
* Of course its theoretically possible to have other call
|
|
* sequences for this method, but that seems to be
|
|
* rather unlikely.
|
|
*/
|
|
wfDeprecated( '$' . $this->global, $this->version, false, 6 );
|
|
return parent::_newObject();
|
|
}
|
|
}
|