/** * Adjust definition of original class source to enable extending * * @param ParsedClass $class Instance of class reflection * @param string $source Source code * @param string $newParentName New name for the parent class * * @return string Replaced code for class */ private function adjustOriginalClass($class, $source, $newParentName) { $type = $this->kernel->hasFeature(Features::USE_TRAIT) && $class->isTrait() ? 'trait' : 'class'; $source = preg_replace("/{$type}\\s+(" . $class->getShortName() . ')(\\b)/iS', "{$type} {$newParentName}\$2", $source); if ($class->isFinal()) { // Remove final from class, child will be final instead $source = str_replace("final {$type}", $type, $source); } return $source; }
/** * * @param ReflectionClass $reflection * @return string */ protected static function getFinal(ReflectionClass $reflection) { return $reflection->isFinal() ? "Yes" : "No"; }