APF-Tracker

Adventure PHP Framework Issue Management


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000202Adventure PHP FrameworkKonfiguration // Configurationpublic2014-06-07 23:372017-02-12 16:05
Reporterdingsda 
Assigned Todingsda 
PrioritylowSeverityfeatureReproducibilityhave not tried
StatusassignedResolutionopen 
Product Version2.0 
Target Version3.4Fixed in Version 
Summary0000202: Ini-Konfigurationsdateien übersichtlicher machen
DescriptionAktuelle sehen mehrdimensionale INI-dateien ungefähr so aus

[configsection]
value1=foo
value2=bar
value3=dummy
subsection.value1=foo
subsection.value2=foo
subsection.value3=foo
subsection.value4=foo
subsection.subsubsection1.value1=foo
subsection.subsubsection1.value2=bar
subsection.subsubsection1.value3=blub
subsection.subsubsection1.value4=dummy
subsection.subsubsection2.value1=foo
subsection.subsubsection2.value2=bar
subsection.subsubsection2.value3=blub
subsection.subsubsection2.value4=dummy

Weiß nicht wie es euch geht, aber ich find das immer echt blöd zu schreiben und unübersichtlich

ich fände es schön, wenn man seine ini-dateien auch so strukturieren könnte

[configsection]
value1=foo
value2=bar
value3=dummy
[configsection.subsection]
value1=foo
value2=foo
value3=foo
value4=foo
[configsection.subsection.subsubsection1]
value1=foo
value2=bar
value3=blub
value4=dummy
[configsection.subsection.subsubsection2]
value1=foo
value2=bar
value3=blub
value4=dummy

ich werd mir das mal in nächster zeit anschauen, wie/ob das umsetzbar ist.
Tagsconfiguration
Codereferenz: ([Datei]:[Zeile])
Namespacenone
Attached Files

- Relationships
parent of 0000224closedChristianAchatz tiefere sektionen der Konfiguration erreichen, wie bei ini-Konfiguration 

-  Notes
(0000372)
ChristianAchatz (administrator)
2014-06-08 11:51

Gute Idee & schön, dass du dir das ansehen magst. :)
(0000451)
dingsda (developer)
2014-07-07 12:35
edited on: 2014-07-07 12:57

ich hab das feature fertig, hab dabei aber ein problem festgestellt.
ändert man seine konfigurationen in das schönere format, so bricht man unter umständen bestehenden code von sich, wenn man sowas wie
 $section->getValue('subsection.subsubsection.value')
genutzt hat.
daher ist das thema aktuell noch abhängig von
http://tracker.adventure-php-framework.org/view.php?id=224 [^]

edit:
hab den parser etwas verändert. das führt sogar dann zu einer inkompatibilität zu altem code, wenn man seine konfigs nicht umstellt. allerdings bringt der neue parser auch performancegewinn bei sehr großen configs
modules/usermanagement/pres/labels.ini
lädt bei mir nun in 0,2s statt 0,4s
liegt einfach daran, dass die ganze konfig nicht doppelt gespeichert wird, wie es aktuell der fall ist.

(0000452)
ChristianAchatz (administrator)
2014-07-07 18:27

Da wir ohnehin eine 3.0 haben werden, sind Inkompatibilitäten an sich ok. Wir sollten die Migration nur mit Skripten optimal durch Automatisierug unterstützen.

Ich schau mir den Pull-Request an.
(0000453)
dingsda (developer)
2014-07-08 01:19

pull request gemacht
https://github.com/AdventurePHP/code/pull/6 [^]

man kann weiterhin die konfiguration wie früher schreiben oder ein format wie oben wählen, oder auch mischformen. wird alles gleich gelesen. um anzugeben, in welchem format die konfigurationen gespeichert werden sollen gibt es die methode setGroupDepth (name kann noch geändert werden). als defaut ist die property groupDepth auf 1 welches eine konfiguration wie bisher erstellt. je höher der wert, desto mehr subsections werden in den überschriften gruppiert.

bei groupDepth=2 würde aus der konfig von oben dann sowas werden:

[configsection]
value1=foo
value2=bar
value3=dummy
[configsection.subsection]
value1=foo
value2=foo
value3=foo
value4=foo
subsubsection1.value1=foo
subsubsection1.value2=bar
subsubsection1.value3=blub
subsubsection1.value4=dummy
subsubsection2.value1=foo
subsubsection2.value2=bar
subsubsection2.value3=blub
subsubsection2.value4=dummy

" Da wir ohnehin eine 3.0 haben werden, sind Inkompatibilitäten an sich ok."
das schon. aber wenn aus einem einfachen einzeiler 5-10 zeilen werden ist das schon blöde.
$section->getValue('foo.bar.boo.far)
kann nicht so direkt umgeschrieben werden in
$section->getSection('foo')->getSection('bar')->getSection('boo')->getValue('far')
möchte man fehlende subsections abfangen muss man bei jedem aufruf auf null prüfen und ne sinnvolle exception für entwickler werfen zu können. andernfalls gibt es sonst nur ne fehlermeldung "trying to use method on non-object" oder so ähnlich, was nicht wirklich hilfreich ist und auch nicht abgefangen werden kann.

wird issue 224 akzeptiert sieht das ganze schon anders aus. dann wird der code nicht wirklich komplizierter
(0000455)
jwlighting (administrator)
2014-07-08 15:49

Habe gerade kurz in den Pull-Request reingeschaut.

Mir fiel dabei auf, das in den Templates jetzt überall ein neues Attribut

delimiter="."

zu den Tags dazu gekommen ist. Finde ich nicht gut. Lässt sich das nicht...
a) zentral konfigurieren
b) der Delimiter fest auf "." festlegen - als private Eigenschaft von BaseConfiguration
c) a) durch b) (zentral konfiguriert über Eigenschaft)

Grüße :)

PS@dingsda: Wie lange programmierst du schon? Meine du hättest mal geschrieben erst seit Kurzem - dafür dann aber recht gut ;)
(0000456)
dingsda (developer)
2014-07-08 19:43
edited on: 2014-07-08 19:45

schön, dass du dir den pull-request angeschaut hast. dafür sind die pull-requests ja auch da. damit man rückmeldung geben kann, bevor es gemerged wird.

das neue attribut hängt mit http://tracker.adventure-php-framework.org/view.php?id=224 [^] zusammen.
die idee, das zentral konfigurierbar zu machen kam mir dann auch erst nachdem ich den pull-request schon gemacht hatte kurz vorm einschlafen.
hatte dazu noch ne notiz angefügt
http://tracker.adventure-php-framework.org/view.php?id=224#c454 [^]

a)
für die zentrale konfiguration eignen sich dann wohl die konfiguration-provider am besten. die geben die information dann an die geladenen configs. ansonsten könnte man das auch über ne statische eigenschaft in baseConfiguration machen. sonst wüssten ja nicht alle anderen instanzen der konfigs auf welchen wert die eigenschaft gesetzt ist.
b) den delimiter ohne möglichkeit der konfiguration fest zu legen wär natürlich auch möglich. hatte ich auch anfangs so angedacht, aber dann überlegt, ob man hier nicht die möglichkeiten des anwenders beschneidet, die namen für die values und sektionen frei zu wählen. beim ini-provider ist der punkt ja schon als trennzeichen für sektionen festgelegt. aber bei allen anderen provider kann man die namen noch relativ frei wählen. daher dachte ich wäre es besser das einfach dem entwickler zu überlassen welches trennzeichen er nimmt, wenn er auf die konfig zugreift.
aber wenn ich so drüber nachdenke ist es vielleicht wirklich besser, das ganze fest zu legen und einfach zu sagen "ihr könnt die konfigs gestalten wie ihr wollt. aber der punkt hat ne spezielle bedeutung. nutzt ihn daher nicht im namen von sections oder values." so ist dann auch sichergestellt, dass es keine probleme geben kann wenn man von xml wieder auf das ini-format wechseln möchte.

ich geb zu, das andere issue war mehr oder weniger recht schnell zusammengeschrieben, nachdem ich bemerkt hatte, dass sonst ziemlich viele code-stellen nicht mehr funktionieren und mir dann auch auffiel wie festgelegt alles auf die ini-konfiguration ist.

" PS@dingsda: Wie lange programmierst du schon? Meine du hättest mal geschrieben erst seit Kurzem - dafür dann aber recht gut ;) "
als ichs geschrieben hatte war es auch erst seit kurzem. ist aber auch schon gut 5 monate her. zumindest mit php hatte ich da grade erst angefangen. vorher nur ein bischen C-grundlagen angelernt und irgendwann davor mal kleinere makros für openoffice erstellt. aber glaub das zählt noch nicht wirklich zum programmieren. hatte kaum ahnung was ich da überhaupt mache. aber hatte funktioniert :D

(0000457)
ChristianAchatz (administrator)
2014-07-08 20:22

Ich schau mir den Request die Tage an, komme grade zu nix... *grr* :)
(0000459)
dingsda (developer)
2014-07-09 13:08

lass dir ruhig zeit.

hab derweil ne alternative wegen jws wunsch vorbereitet. schreib dazu aber am besten hier etwas:
http://tracker.adventure-php-framework.org/view.php?id=224 [^]
(0000601)
ChristianAchatz (administrator)
2015-09-05 17:12

@dingsda: magst du dir das Thema basierend auf der Lösung zu 0000224 nochmal ansehen?
(0000602)
ChristianAchatz (administrator)
2015-09-05 17:12

Moved to 3.2 to shape scope for 3.1.

- Issue History
Date Modified Username Field Change
2014-06-07 23:37 dingsda New Issue
2014-06-08 00:00 dingsda Tag Attached: configuration
2014-06-08 11:51 ChristianAchatz Note Added: 0000372
2014-06-08 16:12 jwlighting Assigned To => dingsda
2014-06-08 16:12 jwlighting Status new => assigned
2014-06-11 23:50 dingsda Target Version => 3.0
2014-07-07 12:31 dingsda Relationship added parent of 0000224
2014-07-07 12:35 dingsda Note Added: 0000451
2014-07-07 12:35 dingsda Note Edited: 0000451 View Revisions
2014-07-07 12:57 dingsda Note Edited: 0000451 View Revisions
2014-07-07 18:27 ChristianAchatz Note Added: 0000452
2014-07-08 01:19 dingsda Note Added: 0000453
2014-07-08 15:49 jwlighting Note Added: 0000455
2014-07-08 19:43 dingsda Note Added: 0000456
2014-07-08 19:45 dingsda Note Edited: 0000456 View Revisions
2014-07-08 20:22 ChristianAchatz Note Added: 0000457
2014-07-09 13:08 dingsda Note Added: 0000459
2015-03-16 22:16 ChristianAchatz Target Version 3.0 => 3.1
2015-09-05 17:12 ChristianAchatz Note Added: 0000601
2015-09-05 17:12 ChristianAchatz Note Added: 0000602
2015-09-05 17:12 ChristianAchatz Target Version 3.1 => 3.2
2016-03-23 14:01 ChristianAchatz Target Version 3.2 => 3.3
2017-02-12 16:05 ChristianAchatz Target Version 3.3 => 3.4


Copyright © 2000 - 2017 MantisBT Team
Powered by Mantis Bugtracker