dépôts
/
lhc
/
web
/
wiklou.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge "Use HTTPS instead of HTTP for caniuse.com"
[lhc/web/wiklou.git]
/
includes
/
StubObject.php
diff --git
a/includes/StubObject.php
b/includes/StubObject.php
index
211afda
..
baf5109
100644
(file)
--- a/
includes/StubObject.php
+++ b/
includes/StubObject.php
@@
-48,19
+48,25
@@
class StubObject {
/** @var null|string */
protected $class;
/** @var null|string */
protected $class;
+ /** @var null|callable */
+ protected $factory;
+
/** @var array */
protected $params;
/**
/** @var array */
protected $params;
/**
- * Constructor.
- *
* @param string $global Name of the global variable.
* @param string $global Name of the global variable.
- * @param string $class Name of the class of the real object.
+ * @param string|callable $class Name of the class of the real object
+ * or a factory function to call
* @param array $params Parameters to pass to constructor of the real object.
*/
public function __construct( $global = null, $class = null, $params = [] ) {
$this->global = $global;
* @param array $params Parameters to pass to constructor of the real object.
*/
public function __construct( $global = null, $class = null, $params = [] ) {
$this->global = $global;
- $this->class = $class;
+ if ( is_callable( $class ) ) {
+ $this->factory = $class;
+ } else {
+ $this->class = $class;
+ }
$this->params = $params;
}
$this->params = $params;
}
@@
-80,7
+86,7
@@
class StubObject {
* infinite loop when unstubbing an object or to avoid reference parameter
* breakage.
*
* infinite loop when unstubbing an object or to avoid reference parameter
* breakage.
*
- * @param object $obj Object to check.
+ * @param object
&
$obj Object to check.
* @return void
*/
public static function unstub( &$obj ) {
* @return void
*/
public static function unstub( &$obj ) {
@@
-110,8
+116,10
@@
class StubObject {
* @return object
*/
public function _newObject() {
* @return object
*/
public function _newObject() {
- return ObjectFactory::getObjectFromSpec( [
- 'class' => $this->class,
+ $params = $this->factory
+ ? [ 'factory' => $this->factory ]
+ : [ 'class' => $this->class ];
+ return ObjectFactory::getObjectFromSpec( $params + [
'args' => $this->params,
'closure_expansion' => false,
] );
'args' => $this->params,
'closure_expansion' => false,
] );
@@
-149,7
+157,6
@@
class StubObject {
}
if ( get_class( $GLOBALS[$this->global] ) != $this->class ) {
}
if ( get_class( $GLOBALS[$this->global] ) != $this->class ) {
- $fname = __METHOD__ . '-' . $this->global;
$caller = wfGetCaller( $level );
if ( ++$recursionLevel > 2 ) {
throw new MWException( "Unstub loop detected on call of "
$caller = wfGetCaller( $level );
if ( ++$recursionLevel > 2 ) {
throw new MWException( "Unstub loop detected on call of "