Dia en generated code

From A-Eskwiki
Revision as of 19:17, 3 May 2018 by Timb (Talk | contribs)

Jump to: navigation, search

TODO: uitleg over dia aanpassen

Een methode in generated code stoppen

Hiervoor heb je de dia, en de file docs/generator/WSW4objects/WSW4method.php nodig. Pas in de dia de Entiteit- of DBObject-klasse aan (TODO: zoek uit wat het verschil is...) en voeg een virtuele methode toe, met naam en comment en parameters enzo naar keuze. Vervolgens ga je naar docs/generator/WSW4objects/WSW4method.php toe, stop je je methodenaam in de enorme switch-statement, en voeg je een corresponderende code$methodenaam-methode toe. Deze neemt $fp: de filehandle waar de generated code heen geschreven moet worden, en $cls: de klasse waar de methode daadwerkelijk op terechtkomt. Hierin is het een goed idee om $this->codeMethodHeader($fp); als eerste aan te roepen, die verzorgt een mooie methodeheader. Vervolgens print je de body van je methode, en vergeet niet de sluit-} :-) Run dia2php en sta verbaasd terwijl je volautomatisch allerlei code niet meer hoeft te schrijven!

Internals van dia2php en dia2py

De twee scripts om dia om te zetten in code werken op een vergelijkbare manier:

  • lees het dia-bestand in
  • doe wat verwerking om WebCie-specifieke constructies te maken
  • output een heleboel bestanden

De output van dia2php bestaat uit updates voor alle bestanden met Generated-klassen, en eventueel maakt het de bestanden met niet-Generated-klassen aan, als die nog niet bestaan. In de Generated-klassen worden velden en methoden autogegenereerd. Bovendien updatet het www/WhosWho4/database.sql, die in MySQL alle tabellen voor WhosWho4 aanmaakt.

De output van dia2py bestaat alleen uit Generated-klassen met velden, omdat het schrijven van methoden nog niet geïmplementeerd is.

In dia2php gebeurt het verwerken in-place, wat de code onoverzichtelijker maakt. Daarom leest dia2py alles in als Diagram$Bla-objecten, en worden op basis daarvan Python$Bla-objecten geconstrueerd. Dit zou zorgen voor betere scheiding der taken. Bovendien heeft dia2py een soort HTMLObjecten, maar dan voor Python. Deze zouden moeten zorgen dat je in je codegeneratie niet veel stringconcatenatie enzo hoeft te doen.

Omdat PHP stiekem best wel lelijk is, hebben we tegenwoordig ook een script dat een