class PHPUnit_Framework_MockObject_Invocation_Static in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php \PHPUnit_Framework_MockObject_Invocation_Static
Represents a static invocation.
@since Class available since Release 1.0.0
Hierarchy
Expanded class hierarchy of PHPUnit_Framework_MockObject_Invocation_Static
File
- vendor/
phpunit/ phpunit-mock-objects/ src/ Framework/ MockObject/ Invocation/ Static.php, line 18
View source
class PHPUnit_Framework_MockObject_Invocation_Static implements PHPUnit_Framework_MockObject_Invocation, PHPUnit_Framework_SelfDescribing {
/**
* @var array
*/
protected static $uncloneableExtensions = array(
'mysqli' => true,
'SQLite' => true,
'sqlite3' => true,
'tidy' => true,
'xmlwriter' => true,
'xsl' => true,
);
/**
* @var array
*/
protected static $uncloneableClasses = array(
'Closure',
'COMPersistHelper',
'IteratorIterator',
'RecursiveIteratorIterator',
'SplFileObject',
'PDORow',
'ZipArchive',
);
/**
* @var string
*/
public $className;
/**
* @var string
*/
public $methodName;
/**
* @var array
*/
public $parameters;
/**
* @param string $className
* @param string $methodname
* @param array $parameters
* @param bool $cloneObjects
*/
public function __construct($className, $methodName, array $parameters, $cloneObjects = false) {
$this->className = $className;
$this->methodName = $methodName;
$this->parameters = $parameters;
if (!$cloneObjects) {
return;
}
foreach ($this->parameters as $key => $value) {
if (is_object($value)) {
$this->parameters[$key] = $this
->cloneObject($value);
}
}
}
/**
* @return string
*/
public function toString() {
$exporter = new Exporter();
return sprintf('%s::%s(%s)', $this->className, $this->methodName, implode(', ', array_map(array(
$exporter,
'shortenedExport',
), $this->parameters)));
}
/**
* @param object $original
* @return object
*/
protected function cloneObject($original) {
$cloneable = null;
$object = new ReflectionObject($original);
// Check the blacklist before asking PHP reflection to work around
// https://bugs.php.net/bug.php?id=53967
if ($object
->isInternal() && isset(self::$uncloneableExtensions[$object
->getExtensionName()])) {
$cloneable = false;
}
if ($cloneable === null) {
foreach (self::$uncloneableClasses as $class) {
if ($original instanceof $class) {
$cloneable = false;
break;
}
}
}
if ($cloneable === null && method_exists($object, 'isCloneable')) {
$cloneable = $object
->isCloneable();
}
if ($cloneable === null && $object
->hasMethod('__clone')) {
$method = $object
->getMethod('__clone');
$cloneable = $method
->isPublic();
}
if ($cloneable === null) {
$cloneable = true;
}
if ($cloneable) {
try {
return clone $original;
} catch (Exception $e) {
return $original;
}
}
else {
return $original;
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PHPUnit_Framework_MockObject_Invocation_Static:: |
public | property | ||
PHPUnit_Framework_MockObject_Invocation_Static:: |
public | property | ||
PHPUnit_Framework_MockObject_Invocation_Static:: |
public | property | ||
PHPUnit_Framework_MockObject_Invocation_Static:: |
protected static | property | ||
PHPUnit_Framework_MockObject_Invocation_Static:: |
protected static | property | ||
PHPUnit_Framework_MockObject_Invocation_Static:: |
protected | function | ||
PHPUnit_Framework_MockObject_Invocation_Static:: |
public | function |
Overrides PHPUnit_Framework_SelfDescribing:: |
|
PHPUnit_Framework_MockObject_Invocation_Static:: |
public | function | 1 |