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 {

}