class SplFileInfoPatch in Zircon Profile 8.0
Same name and namespace in other branches
- 8 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php \Prophecy\Doubler\ClassPatch\SplFileInfoPatch
SplFileInfo patch. Makes SplFileInfo and derivative classes usable with Prophecy.
@author Konstantin Kudryashov <ever.zet@gmail.com>
Hierarchy
- class \Prophecy\Doubler\ClassPatch\SplFileInfoPatch implements ClassPatchInterface
Expanded class hierarchy of SplFileInfoPatch
File
- vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ ClassPatch/ SplFileInfoPatch.php, line 23
Namespace
Prophecy\Doubler\ClassPatchView source
class SplFileInfoPatch implements ClassPatchInterface {
/**
* Supports everything that extends SplFileInfo.
*
* @param ClassNode $node
*
* @return bool
*/
public function supports(ClassNode $node) {
if (null === $node
->getParentClass()) {
return false;
}
return 'SplFileInfo' === $node
->getParentClass() || is_subclass_of($node
->getParentClass(), 'SplFileInfo');
}
/**
* Updated constructor code to call parent one with dummy file argument.
*
* @param ClassNode $node
*/
public function apply(ClassNode $node) {
if ($node
->hasMethod('__construct')) {
$constructor = $node
->getMethod('__construct');
}
else {
$constructor = new MethodNode('__construct');
$node
->addMethod($constructor);
}
if ($this
->nodeIsDirectoryIterator($node)) {
$constructor
->setCode('return parent::__construct("' . __DIR__ . '");');
return;
}
$constructor
->useParentCode();
}
/**
* Returns patch priority, which determines when patch will be applied.
*
* @return int Priority number (higher - earlier)
*/
public function getPriority() {
return 50;
}
/**
* @param ClassNode $node
* @return boolean
*/
private function nodeIsDirectoryIterator(ClassNode $node) {
$parent = $node
->getParentClass();
return 'DirectoryIterator' === $parent || is_subclass_of($parent, 'DirectoryIterator');
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
SplFileInfoPatch:: |
public | function |
Updated constructor code to call parent one with dummy file argument. Overrides ClassPatchInterface:: |
|
SplFileInfoPatch:: |
public | function |
Returns patch priority, which determines when patch will be applied. Overrides ClassPatchInterface:: |
|
SplFileInfoPatch:: |
private | function | ||
SplFileInfoPatch:: |
public | function |
Supports everything that extends SplFileInfo. Overrides ClassPatchInterface:: |