public static function update($targetClass, $targetPath, $sourceClass, $sourcesContents) { $targetContents = str_replace($sourceClass, $targetClass, $sourcesContents); $php = '<?php'; $pos = utf8_strpos($targetContents, $php); if ($pos !== false) { $replacement = sprintf("%s\n\n// updated by %s at %s", $php, __CLASS__, date('c')); $targetContents = utf8_substr_replace($targetContents, $replacement, $pos, utf8_strlen($php)); } $classPrefix = substr($targetClass, 0, strpos($targetClass, 'ShippableHelper_')); $offset = 0; while (true) { if (!preg_match('#DevHelper_Helper_ShippableHelper_[a-zA-Z_]+#', $targetContents, $matches, PREG_OFFSET_CAPTURE, $offset)) { break; } $siblingSourceClass = $matches[0][0]; $offset = $matches[0][1]; $siblingTargetClass = str_replace('DevHelper_Helper_', $classPrefix, $siblingSourceClass); $targetContents = substr_replace($targetContents, $siblingTargetClass, $offset, strlen($siblingSourceClass)); class_exists($siblingTargetClass); $offset += 1; } $targetContents = preg_replace('#\\* @version \\d+\\s*\\n#', '$0 * @see ' . $sourceClass . "\n", $targetContents, -1, $count); return DevHelper_Generator_File::filePutContents($targetPath, $targetContents); }
public static function generateXfcpClass($clazz, $realClazz, DevHelper_Config_Base $config) { $ghostClazz = str_replace($config->getClassPrefix(), $config->getClassPrefix() . '_DevHelper_XFCP', $clazz); $ghostPath = DevHelper_Generator_File::getClassPath($ghostClazz); if (file_exists($ghostPath)) { // ghost file exists, yay! return true; } $ghostContents = "<?php\n\nclass XFCP_{$clazz} extends {$realClazz}\n{\n}\n"; return DevHelper_Generator_File::filePutContents($ghostPath, $ghostContents); }