[linux-l] Bash_Script von Browser. Hilfe!

Olaf Radicke briefkasten at olaf-radicke.de
Do Apr 4 08:16:15 CEST 2013


Hatto Peter!

> Peter Ross <Peter.Ross at bogen.in-berlin.de> hat am 4. April 2013 um 02:54
> geschrieben:
[...]
> Unter Symfony beschreibe ich das Datenbankschema in einer schema.yml,
> inklusive Relationen untereinander (Foreign Keys etc.)
>
> Daraus generiert Symfony die Datenbank, und ich habe dann ein Frontend
> ähnlich phpMyAdmin, welches mir sofort erlaubt, Daten einzugeben, aus
> Foreign Keys auszuwählen, Typprüfungen für den Input vorzunehmen, es prüft
> gegen mögliche SQL-Injektionen etc.
>
> Ich habe also, ohne eine Zeile Code zu schreiben, bereits eine lauffähige
> Datenbank-Anwendung.

Naja, nicht ganz. Du hast ja das schema.yml geschrieben.

> Meine Erweiterungen/Änderungen machen diese "Instant-Anwendung"
> komfortabler, erweitern um Workflow etc.
>
> Ich kann nicht sehen, wie Du diese "Instant-Anwendung" "einfach so" mit
> tntdb erreichst.

Nein, Prototyping ist nicht das primäre Ziel von C++/Tntnet.

> Nimmst Du dafür ein anderes Tool, oder habe ich bei tntnet/tntdb was
> übersehen?
>
> Symfony ist ein Framework für eine Anwendung, die auf einer relationalen
> Datenbank basiert.

Ich denke wir reden hier gerade von Object-relational mapping (ORM) - oder?
Doctrine kann man mit und ohne ORM in Symfony verwenden. Ich sprach
mit einem gestandenen PHP-Programmierer, der bei einem anerkannten
PHP-Spezialisten arbeitet. Dieser sagte, das sie in aller Regel Doctrine
ohne ORM-Layer verwenden, da die Performance sonst stark leidet.
Was nicht weiter verwunderlich ist. Muss doch erheblicher Parsing-
und Casting-Aufwand getrieben werden. Das könnte man sich in C++
vielleicht noch erlauben, aber in einer Script-Sprache mit schwacher
Typisierung... Aber für Prototyping mag es noch reichen.

> Daher brauchst Du für eine Datenbank-Anwendung, wenn Du nicht alles "zu
> Fuß" programmieren willst, ein Widget-Framework, das in der Lage ist, mit
> einem Datenbankschema umzugehen, um Submit-Forms fur die Datenbank zu
> generieren, zu prüfen und in die Datenbank zu übertragen.

Oft ist es aber so, das man beim Aussehen der form bestimmte
Vorstellungen hat, und das die Eingabeprüfung mit der Programm-
Logik zusammenhängen, die dazu führen, das man dann doch wieder
kein form "von der Stange" generieren kann.

> Ich finde die Einbettung von C++ schon interessant, würde aber gern
> wissen, was Du für diese Abstraktionsebene benutzt.

Ich definiere (Fabrik-)Klassen die das raus ziehen der Daten
kapseln. Meist lasse ich mir Objekte zurückgeben, die wiederum
selbständig Daten nachziehen.

Also z.B. eine Klasse "Bücherregal" mit der ich einzelne oder
selektierte Datensätze als Klasse "Buch" herausziehe. Objekte
der Klasse haben dann schon die Daten Titel, Erscheinung, ISBN.
Daten die in anderen Tabellen stehen, z.B. Autor und Schlagworte,
ziehe ich erst aus der Datenbank, wenn eine Get-Anfrage auf das
Objekt "Buch" kommt. Das Objekt Buch ruft dann z.B. eine
Klasse "AutorenVerzeichnis" auf um sich ein Objekt "Autor"
zurückgeben zu lassen.

Wenn es die Programmlogik erfordert, kann ich die Klasse
"Bücherregal" durch eine Methode erweitern, die mir Bücher-Objekte
generiert, deren Autoren-Daten schon ohne nachladen enthalten
sind um alle Daten mit einem Selct zu ziehen und die DB
zu schonen.

Gruß

Olaf



Mehr Informationen über die Mailingliste linux-l