Erste Schritte

Nach dem erfolgreichen Download der Phar Archive kann das erste kleine Anwendungsscript erstellt werden. Als erstes wird die Datei myapp.php angelegt und mit folgendem Code ergänzt. Diese Zeilen sorgen dafür, dass das Framework und die Komponente eingebunden wird.

<?php

include_once '/phar/alvine.framework-snapshot.phar';
include_once '/phar/alvine.development.upkeep-snapshot.phar';

Über die Sourceklasse lassen sich Quelltexte bearbeiten. Im folgenden soll die Einrückung eines Quelltextes bearbeitet werden.

/** Der Quelltext mit Einrückung (vier Leerzeichen) */
$source = '    $a=4';

/** Einrückung entfernen */
echo (new \Alvine\Development\Upkeep\Source($source))->outdent(0);
// -> $a = 4;

/** Einrückung hinzufügen */
echo (new \Alvine\Development\Upkeep\Source($source))->indent(0);
// ->         $a = 4;

Im nächsten Beispiel wird der Quellcode einer komplette Klasse erzeugt.

/** Eigenschaften der Klasse */
$properties = new \Alvine\Types\Collection();

/** Eigenchaft hinzufügen */
$property = new \Alvine\Development\Upkeep\Representation\Part\Property('width');
$property->setType(\Alvine\Types\StringType::class);
$properties->append($property);

 /** Klasse erstellen */
$myClass = new Alvine\Development\Upkeep\Producer\DefaultClass('\MyNamespace\MyClass',$properties);

/** Quelltext ausgeben */
echo (string)$myClass;

Das Ergebnis sieht 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.
 *
 * @category   Component
 * @package    MyNamespace
 * @author     schukai GmbH <[email protected]>
 * @copyright  2000 - 2018 schukai GmbH
 * @license    http://alvine.io/license/ Licence
 * @version    $Revision: 156 $
 * @link       http://alvine.io/ alvine.io
 */
namespace MyNamespace;

/**
 *
 *
 * @category   Component
 * @package    MyNamespace
 * @author     schukai GmbH <[email protected]>
 * @license    http://alvine.io/license/ Licence
 * @version    $Revision: 156 $
 * @link       http://alvine.io/ alvine.io
 * @since      20180403
 */
class MyClass {
    // <editor-fold defaultstate="collapsed" desc="properties">
    /**
     * @var Alvine\Types\StringType
     */
    public $width;
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="constructor">
    /**
     */
    public function __construct() {

    }
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="methods">
    /**
     *
     * @return \Alvine\Types\StringType
     */
    public function getWidth() {
        return $this->width;
    }

    /**
     *
     * @param \Alvine\Types\StringType $width
     *
     * @return \MyNamespace\MyClass
     */
    public function setWidth(Alvine\Types\StringType $width) {
        $this->width = $width;
        return $this;
    }

    /**
     *
     * @param \Array $array
     *
     * @return \MyNamespace\MyClass
     */
    static public function getInstanceFromArray(Array $array) {
        $arrayHelper = new \Alvine\Types\ArrayHelper($array);
        $obj = new static();
        $obj->setWidth($arrayHelper->getValue('width'));
        return $obj;
    }
    // </editor-fold>

}