MediaWiki  REL1_24
StubObject Class Reference

Class to implement stub globals, which are globals that delay loading the their associated module code by deferring initialisation until the first method call. More...

Inheritance diagram for StubObject:
Collaboration diagram for StubObject:

List of all members.

Public Member Functions

 __call ($name, $args)
 Function called by PHP if no function with that name exists in this object.
 __construct ($global=null, $class=null, $params=array())
 Constructor.
 _call ($name, $args)
 Function called if any function exists with that name in this object.
 _newObject ()
 Create a new object to replace this stub object.
 _unstub ($name= '_unstub', $level=2)
 This function creates a new object of the real class and replace it in the global variable.

Static Public Member Functions

static isRealObject ($obj)
 Returns a bool value whenever $obj is a stub object.
static unstub (&$obj)
 Unstubs an object, if it is a stub object.

Protected Attributes

null string $class
 *
null string $global
 *
array $params
 *

Detailed Description

Class to implement stub globals, which are globals that delay loading the their associated module code by deferring initialisation until the first method call.

Note on reference parameters:

If the called method takes any parameters by reference, the __call magic here won't work correctly. The solution is to unstub the object before calling the method.

Note on unstub loops:

Unstub loops (infinite recursion) sometimes occur when a constructor calls another function, and the other function calls some method of the stub. The best way to avoid this is to make constructors as lightweight as possible, deferring any initialisation which depends on other modules. As a last resort, you can use StubObject::isRealObject() to break the loop, but as a general rule, the stub object mechanism should be transparent, and code which refers to it should be kept to a minimum.

Definition at line 44 of file StubObject.php.


Constructor & Destructor Documentation

StubObject::__construct ( global = null,
class = null,
params = array() 
)

Constructor.

Parameters:
string$globalName of the global variable.
string$className of the class of the real object.
array$paramsParameters to pass to constructor of the real object.

Reimplemented in DeprecatedGlobal.

Definition at line 58 of file StubObject.php.


Member Function Documentation

StubObject::__call ( name,
args 
)

Function called by PHP if no function with that name exists in this object.

Parameters:
string$nameName of the function called
array$argsArguments
Returns:
mixed

Reimplemented in StubUserLang.

Definition at line 121 of file StubObject.php.

StubObject::_call ( name,
args 
)

Function called if any function exists with that name in this object.

It is used to unstub the object. Only used internally, PHP will call self::__call() function and that function will call this function. This function will also call the function with the same name in the real object.

Parameters:
string$nameName of the function called
array$argsArguments
Returns:
mixed

Definition at line 100 of file StubObject.php.

Create a new object to replace this stub object.

Returns:
object

Reimplemented in StubUserLang, and DeprecatedGlobal.

Definition at line 109 of file StubObject.php.

StubObject::_unstub ( name = '_unstub',
level = 2 
)

This function creates a new object of the real class and replace it in the global variable.

This is public, for the convenience of external callers wishing to access properties, e.g. eval.php

Parameters:
string$nameName of the method called in this object.
int$levelLevel to go in the stack trace to get the function who called this function.
Returns:
object The unstubbed version of itself
Exceptions:
MWException

Definition at line 137 of file StubObject.php.

static StubObject::isRealObject ( obj) [static]

Returns a bool value whenever $obj is a stub object.

Can be used to break a infinite loop when unstubbing an object.

Parameters:
object$objObject to check.
Returns:
bool True if $obj is not an instance of StubObject class.

Definition at line 71 of file StubObject.php.

static StubObject::unstub ( &$  obj) [static]

Unstubs an object, if it is a stub object.

Can be used to break a infinite loop when unstubbing an object or to avoid reference parameter breakage.

Parameters:
object$objObject to check.
Returns:
void

Definition at line 83 of file StubObject.php.


Member Data Documentation

null string StubObject::$class [protected]

*

Definition at line 47 of file StubObject.php.

null string StubObject::$global [protected]

*

Definition at line 45 of file StubObject.php.

array StubObject::$params [protected]

*

Definition at line 49 of file StubObject.php.


The documentation for this class was generated from the following file: