diff options
Diffstat (limited to 'includes/StubObject.php')
-rw-r--r-- | includes/StubObject.php | 115 |
1 files changed, 48 insertions, 67 deletions
diff --git a/includes/StubObject.php b/includes/StubObject.php index a3970f34..8878660b 100644 --- a/includes/StubObject.php +++ b/includes/StubObject.php @@ -42,30 +42,36 @@ * which refers to it should be kept to a minimum. */ class StubObject { - var $mGlobal, $mClass, $mParams; + /** @var null|string */ + protected $global; + + /** @var null|string */ + protected $class; + + /** @var array */ + protected $params; /** * Constructor. * - * @param string $global name of the global variable. - * @param string $class name of the class of the real object. - * @param array $params parameters to pass to constructor of the real - * object. + * @param string $global Name of the global variable. + * @param string $class Name of the class of the real object. + * @param array $params Parameters to pass to constructor of the real object. */ - function __construct( $global = null, $class = null, $params = array() ) { - $this->mGlobal = $global; - $this->mClass = $class; - $this->mParams = $params; + public function __construct( $global = null, $class = null, $params = array() ) { + $this->global = $global; + $this->class = $class; + $this->params = $params; } /** * Returns a bool value whenever $obj is a stub object. Can be used to break * a infinite loop when unstubbing an object. * - * @param $obj Object to check. - * @return Boolean: true if $obj is not an instance of StubObject class. + * @param object $obj Object to check. + * @return bool True if $obj is not an instance of StubObject class. */ - static function isRealObject( $obj ) { + public static function isRealObject( $obj ) { return is_object( $obj ) && !$obj instanceof StubObject; } @@ -74,12 +80,12 @@ class StubObject { * infinite loop when unstubbing an object or to avoid reference parameter * breakage. * - * @param $obj Object to check. + * @param object $obj Object to check. * @return void */ - static function unstub( $obj ) { + public static function unstub( &$obj ) { if ( $obj instanceof StubObject ) { - $obj->_unstub( 'unstub', 3 ); + $obj = $obj->_unstub( 'unstub', 3 ); } } @@ -90,32 +96,32 @@ class StubObject { * This function will also call the function with the same name in the real * object. * - * @param string $name name of the function called - * @param array $args arguments + * @param string $name Name of the function called + * @param array $args Arguments * @return mixed */ - function _call( $name, $args ) { + public function _call( $name, $args ) { $this->_unstub( $name, 5 ); - return call_user_func_array( array( $GLOBALS[$this->mGlobal], $name ), $args ); + return call_user_func_array( array( $GLOBALS[$this->global], $name ), $args ); } /** * Create a new object to replace this stub object. * @return object */ - function _newObject() { - return MWFunction::newObj( $this->mClass, $this->mParams ); + public function _newObject() { + return MWFunction::newObj( $this->class, $this->params ); } /** * Function called by PHP if no function with that name exists in this * object. * - * @param string $name name of the function called - * @param array $args arguments + * @param string $name Name of the function called + * @param array $args Arguments * @return mixed */ - function __call( $name, $args ) { + public function __call( $name, $args ) { return $this->_call( $name, $args ); } @@ -125,82 +131,57 @@ class StubObject { * This is public, for the convenience of external callers wishing to access * properties, e.g. eval.php * - * @param string $name name of the method called in this object. - * @param $level Integer: level to go in the stack trace to get the function - * who called this function. + * @param string $name Name of the method called in this object. + * @param int $level Level to go in the stack trace to get the function + * who called this function. + * @return object The unstubbed version of itself * @throws MWException */ - function _unstub( $name = '_unstub', $level = 2 ) { + public function _unstub( $name = '_unstub', $level = 2 ) { static $recursionLevel = 0; - if ( !$GLOBALS[$this->mGlobal] instanceof StubObject ) { - return $GLOBALS[$this->mGlobal]; // already unstubbed. + if ( !$GLOBALS[$this->global] instanceof StubObject ) { + return $GLOBALS[$this->global]; // already unstubbed. } - if ( get_class( $GLOBALS[$this->mGlobal] ) != $this->mClass ) { - $fname = __METHOD__ . '-' . $this->mGlobal; + if ( get_class( $GLOBALS[$this->global] ) != $this->class ) { + $fname = __METHOD__ . '-' . $this->global; wfProfileIn( $fname ); $caller = wfGetCaller( $level ); if ( ++$recursionLevel > 2 ) { wfProfileOut( $fname ); - throw new MWException( "Unstub loop detected on call of \${$this->mGlobal}->$name from $caller\n" ); + throw new MWException( "Unstub loop detected on call of " + . "\${$this->global}->$name from $caller\n" ); } - wfDebug( "Unstubbing \${$this->mGlobal} on call of \${$this->mGlobal}::$name from $caller\n" ); - $GLOBALS[$this->mGlobal] = $this->_newObject(); + wfDebug( "Unstubbing \${$this->global} on call of " + . "\${$this->global}::$name from $caller\n" ); + $GLOBALS[$this->global] = $this->_newObject(); --$recursionLevel; wfProfileOut( $fname ); + return $GLOBALS[$this->global]; } } } /** - * Stub object for the content language of this wiki. This object have to be in - * $wgContLang global. - * - * @deprecated since 1.18 - */ -class StubContLang extends StubObject { - - function __construct() { - wfDeprecated( __CLASS__, '1.18' ); - parent::__construct( 'wgContLang' ); - } - - function __call( $name, $args ) { - return $this->_call( $name, $args ); - } - - /** - * @return Language - */ - function _newObject() { - global $wgLanguageCode; - $obj = Language::factory( $wgLanguageCode ); - $obj->initEncoding(); - $obj->initContLang(); - return $obj; - } -} - -/** * Stub object for the user language. It depends of the user preferences and * "uselang" parameter that can be passed to index.php. This object have to be * in $wgLang global. */ class StubUserLang extends StubObject { - function __construct() { + public function __construct() { parent::__construct( 'wgLang' ); } - function __call( $name, $args ) { + public function __call( $name, $args ) { return $this->_call( $name, $args ); } /** * @return Language */ - function _newObject() { + public function _newObject() { return RequestContext::getMain()->getLanguage(); } } |