Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 26-Dec-2009
< Voriger Tag   Nächster Tag >

Samstag, 26. Dezember 2009

PHP: RuBisCO ORM -- Application- und Template-Klasse

Neu hinzugekommen die Application-Klasse für Applikationsname, Namensraum und später auch Autoren, Copyright, ... und die Template-Klasse für das Ersetzen der Platzhalter inklusive Einrückung.

Application

Application speichert direkt die Namen für die Applikation, den Namensraum, den Metadaten und besitzt ein Array für die Tabellen. In Table werden diese Daten in die Vorlagen eingesetzt.

class Application {
    public $name;
    public $namespace;

    public $authors;
    public $copyright;
    public $license;
    

    public $tables = array();

Template

Template ist in dieser ersten Version eine sehr einfache, zusammengehackte Klasse zum Ersetzen der Platzhalter in den Vorlagen. Hauptsächlich entstanden, um die Platzhalter sinnvoll einzurücken.

Das sieht innerhalb von replace() unübersichtlich aus. Im Wesentlichen wird dort folgendes gemacht:

  • Suche nach eingerückten Zeilen mit Platzhalter
  • Extrahiere die Einrückung
  • Wandel den einzusetzenden Inhalt in die Zeilen eines Arrays um
  • Füge diese Zeilen inklusive Einrückung in die Vorlage ein
public function replace($name, $content) {
    // Replace with indent

    $newTemplate = '';

    foreach(\split("\n", \rtrim($this->template)) as $line) {
        //    {fieldDeclaration}
        if(\preg_match("#^(\s*)\{$name\}\s*$#", $line, $matches)) {
            $indent = $matches[1];


            // Convert $content to array

            $a = null;

            if(\is_array($content)) {$a = $content;}
            if(\is_string($content)){$a = \split("\n", rtrim($content));}
            if(is_null($a)) {
                $a = array($content);
                echo "Warning: Not supported type\n"; // TODO
            } 


            // Replace placeholder with content

            foreach($a as $item) {
                $newTemplate .= "{$indent}{$item}\n";
            }  
        } else {
            $newTemplate .= $line . "\n";
        }// if(\preg_match("#^(\s*)\{$name\}\s*$#", $line, $matches)) {
    }// foreach(\split("\n", $this->template) as $line) {

    $this->template = $newTemplate;


    // Replace without indent

    $this->template = \str_replace('{' . $name . '}', $content, $this->template);
}// replace

Quelltext (MIT Lizenz)

Der komplette Quelltext von RuBisCO ORM liegt in Subversion: Heutige Revision 11, aktuelle Version.

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<Dezember 2009 >
 010203040506
07080910111213
14151617181920
21222324252627
28293031   

Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 26-Dec-2009
(C) 2000-2018 by Sven Drieling