Reflection¶
Mit Hilfe der Alvine\Development\Upkeep\Reflection
Klasse lassen sich auch bestehende
Klassen einlesen und verändern.
$code = <<<EOF
<?php
/**
* Erstellen von Quelltexten
*
* Lore Impsum für Lorem und Ypsum.
*
* @category upkeepComponent
* @package Alvine\Development\Upkeep\Render
* @author schukai GmbH <[email protected]>
* @license http://alvine.io/license/ Licence
* @version Release: \$Revision: 173 $
* @link http://alvine.io/ Alvine
* @since 20170904
*/
class myClass {
}
EOF;
/** Ausgangs-Quelltext */
$source = new Alvine\Development\Upkeep\Source($code);
/** Reflection */
$object = new Alvine\Development\Upkeep\Reflection($source);
/** Da in einer Datei mehrere Strukturen (Klassen, Interfaces, etc) integriert sein können, wird eine Collection zurückgegeben. */
$struct = $object->getRepresentation();
$representation = $struct->current();
/** Namensraum setzen, Klassenname überschreiben, Beschreibung setzen */
$representation->setNamespace('My\Space')->setName('NewName')->setDescription('Neue und geänderte Klasse');
/** Ausgabe der geänderten und aufbereiteten Klasse */
echo (string) \Alvine\Development\Upkeep\Render::getInstanceFromRepresentation($representation);
Das Ergebnis sieht nun folgendermaßen aus
/**
* ALVINE
*
* COPYRIGHT: All title and proprietary rights, including trade
* secrets, in the Software and any copies thereof and the
* accompanying written materials, are owned by schukai GmbH
* and are protected by German copyright laws, other applicable
* copyright laws and international treaty provisions.
*
* @package My\Space
* @copyright -
* @version $Revision: 156 $
* @link http://alvine.io/ alvine.io
*/
namespace My\Space;
/**
* Neue und geänderte Klasse
*
* @package My\Space
* @version $Revision: 156 $
* @link http://alvine.io/ alvine.io
*/
class NewName {
}