Alexander Brock: Script zur Erzeugung von verschachtelten Menüs

Hallo Freunde des gehobenen Forumsgenußes,

Ich habe eine kleine Klasse zur Erzeugung eines beliebig tief verschachtelten
Menüs (das nie auf die aktuelle Seite verweist) geschrieben und mich nun
dazu durchgerungen, eine Dokumentation dazu zu erstellen und hochzuladen.

Die Klasse (die unter der GPL steht) und die Dokumentation gibt es unter
http://vmenue.vm.funpic.de/

Die Idee dazu kam mir aus der Notwendigkeit für eine solche Software und
Jeenas Weblogeintrag Dynamisches Menü in PHP

Ich bitte nun um Kritik / Test der Software und der Webseite (die diese Software verwendet).
Dabei geht es nicht so sehr um das Design (darin bin ich vermutlich eine Niete)
sondern um die Software und die Verständlichkeit der Dokumentation

Gruß
Alexander Brock

--
[latex]\lim_{3 \to 4}{\sqrt{3}} = 2[/latex]
  1. hallo Alexander,

    Hallo Freunde des gehobenen Forumsgenußes,

    ähm ... diese Begrüßungsfloskel war solange lustig, wie man wußte, auf welche Stelle in der Zitatsammlung sie sich bezog. Eventuell könntest du das jetzt wieder auf eine korrekte Schreibung rückentwickeln.

    Die Klasse (die unter der GPL steht) und die Dokumentation gibt es unter
    http://vmenue.vm.funpic.de/

    Die Klasse und insgesamt die Methodik mögen interessant und hilfreich sein, die CSS ist es aber auf gar keinen Fall. Es gibt dunkelblaue Schriften auf nur wenig hellerem blauem Hintergrund. Die Lesbarkeit ist für jemanden wie mich, der eh nur mit einem Auge sehen kann, extrem minderwertig.

    Die Idee dazu kam mir aus der Notwendigkeit für eine solche Software und
    Jeenas Weblogeintrag Dynamisches Menü in PHP

    Jeena hat ein prinzipiell richtiges Herangehen beschrieben. Ich kannte diesen Artikel von ihm noch nicht, als ich meine eigene Seite auf ein PHP-Format und das dazugehörige Menü umgestellt habe.

    Ich bitte nun um Kritik / Test der Software und der Webseite (die diese Software verwendet).
    Dabei geht es nicht so sehr um das Design (darin bin ich vermutlich eine Niete)

    Vermutlich.

    sondern um die Software und die Verständlichkeit der Dokumentation

    Naja, sagen wir mal kurz: du hast ja Jeenas Artikel hier angegeben. Der ist meines Erachtens deutlich verständlicher und regt eher zum Nachbauen und Ausprobieren an als deine Seite.

    Tut mir leid, ich mag dich ja ganz gut leiden, aber _hier_ hast du wohl noch etwas Nachholbedarf, was die Pädagogik angeht.

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph,

      Die Klasse und insgesamt die Methodik mögen interessant und hilfreich sein, die CSS ist es aber auf gar keinen Fall. Es gibt dunkelblaue Schriften auf nur wenig hellerem blauem Hintergrund. Die Lesbarkeit ist für jemanden wie mich, der eh nur mit einem Auge sehen kann, extrem minderwertig.

      Stimmt. Ist es jetzt besser?

      Naja, sagen wir mal kurz: du hast ja Jeenas Artikel hier angegeben. Der ist meines Erachtens deutlich verständlicher und regt eher zum Nachbauen und Ausprobieren an als deine Seite.

      Meine Software kann im Gegensatz zu Jeenas verschachtelte Menüs darstellen (siehe Webseite)
      und genau um diesen Aspekt geht es mir.

      Gruß
      Alexander Brock

      --
      SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
      http://againsttcpa.com
  2. Hi,

    zunächst mal fällt negativ auf, daß Du in PHP exakt denselben Fehler machst, der hier ständig bei CSS moniert wird. Du bezeichnest z.B. menu_ul = 'ul', also implizierst Du, daß (natürlich meist sinnvoll) eine ul verwendet wird. Besser wäre hier freilich, sich auf die Funktion zu beschränken, also z.B. menu_container.

    Bei Deiner Seite fällt optisch zunächst der wirklich ungenügende Kontrast auf, aber auch der durch überlange Code-Zeilen erzeugte unschöne horizontale Scrollbalken.
    Beim Menü-Quelltext auf Deiner Seite wundere ich mich über das <div id="menu">. Ich sehe hierzu keine Notwendigkeit.
    Ach ja: nur eine für Dich vielleicht unwichtige Nebensache, aber ich finde Quelltexteinrückungen bei verschachtelten Elementen äußerst nützlich.

    freundliche Grüße
    Ingo

  3. echo $begrüßung;

    Ich bitte nun um Kritik / Test der Software und der Webseite (die diese Software verwendet).

    Die Funktion einbind() in Zeile 2 gehört nicht zum Sprachumfang von PHP. Du solltest deren Code mitliefern oder auf sie verzichten.

    Deine Klasse heißt VMenü. Das tippt sich schwer für jemanden der keinen UTF8-fähigen Editor hat. Obwohl es funktioniert sollte doch bei Bezeichnern auf Umlaute verzichtet werden. Überhaupt verwendest du bunt durcheinander deutsche und englische Namen für Variablen/Funktionen. Eine einheitliche Benennung fände ich besser.

    Gut dokumentierter Quelltext liest sich, auch wenn es der eigene ist, nach einiger Zeit besser als völlig unkommentierter. Der Anwender will mindestens wissen: Was tut die Funktion/Methode, was für Parameter erwartet sie, was gibt sie zurück. Schau dir mal http://www.phpdoc.org an und den Stil der PEAR-Klassen.

    Die Deklaration von Konstanten sollte im globalen Kontext stehen, nicht im Konstruktor einer Klasse. Beim Erstellen einer zweiten Instanz[*] gibt es sonst eine Fehlermeldung.

    Soweit einige Kritikpunkte, die mir aufgefallen sind.
    Zur aus meiner SIcht ungünstigen Verschachtelung des Meüs schrieb ich ja bereits zu Jeenas Frage etwas.

    echo "$verabschiedung $name";

    [*] Das wird nicht weiter auffallen, da die meisten Anwendungsfälle sicher mit einer Instanz auskommen werden.

    1. Hallo dedlfix,

      Die Funktion einbind() in Zeile 2 gehört nicht zum Sprachumfang von PHP. Du solltest deren Code mitliefern oder auf sie verzichten.

      Ich werde auf sie verzichten, da sie mit dem Script ansich nichts zu tun hat.

      Deine Klasse heißt VMenü. Das tippt sich schwer für jemanden der keinen UTF8-fähigen Editor hat. Obwohl es funktioniert sollte doch bei Bezeichnern auf Umlaute verzichtet werden.

      Spricht für solche Leute etwas dagegen, die Klasse einfach umzubenennen?

      Überhaupt verwendest du bunt durcheinander deutsche und englische Namen für Variablen/Funktionen. Eine einheitliche Benennung fände ich besser.

      Dann mach ich heute Abend alles deutsch.

      Gut dokumentierter Quelltext liest sich, auch wenn es der eigene ist, nach einiger Zeit besser als völlig unkommentierter.

      Auf der Webseite werden die Methoden und Funktionen der Klasse im Stil der PHP-Dokumentation
      erläutert. Reicht das nicht?

      Die Deklaration von Konstanten sollte im globalen Kontext stehen, nicht im Konstruktor einer Klasse. Beim Erstellen einer zweiten Instanz[*] gibt es sonst eine Fehlermeldung.

      Danke, das hatte ich übersehen.

      Soweit einige Kritikpunkte, die mir aufgefallen sind.
      Zur aus meiner SIcht ungünstigen Verschachtelung des Meüs schrieb ich ja bereits zu Jeenas Frage etwas.

      Ich finde, die Verschachtelung entpsricht dem Grundsatz "Keep it simple, stupid" (oder so).

      Gruß
      Alexander Brock

      --
      SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
      http://againsttcpa.com
      1. echo $begrüßung;

        Deine Klasse heißt VMenü. Das tippt sich schwer für jemanden der keinen UTF8-fähigen Editor hat. Obwohl es funktioniert sollte doch bei Bezeichnern auf Umlaute verzichtet werden.

        Spricht für solche Leute etwas dagegen, die Klasse einfach umzubenennen?

        Bei dem zweimaligen Vorkommen mag das akzeptabel sein. Wenn es allerdings viele solcher Stellen gibt, dann hast du deinen Anwendern unnötige Arbeit generiert.

        Überhaupt verwendest du bunt durcheinander deutsche und englische Namen für Variablen/Funktionen. Eine einheitliche Benennung fände ich besser.

        Dann mach ich heute Abend alles deutsch.

        Das hatte ich auch mal probiert. "Ich bin Deutscher also können meine Klassen/Objekte/Variablen/Funktionen auch deutsche Namen tragen." Englisch hat gegenüber dem Deutschen den Vorteil einer einfacheren und vor allem (größtenteils) einheitlichen Mehrzahlbildung. "Hersteller" ist ein Wort, das in Einzahl und Mehrzahl gleich geschrieben wird. Was tun, wenn man einen Bezeichner für einen und einen für mehrere Hersteller braucht? Mit "manufacturer" und "manufacturers" hat man es da leichter.

        Gut dokumentierter Quelltext liest sich, auch wenn es der eigene ist, nach einiger Zeit besser als völlig unkommentierter.

        Auf der Webseite werden die Methoden und Funktionen der Klasse im Stil der PHP-Dokumentation
        erläutert. Reicht das nicht?

        Ich würde gern nein sagen, nur fallen mir momentan nicht wirklich stichhaltige Argumente ein.
        Vielleicht: Wenn du im phpdoc-Stil gleich während der Entwicklung kommentierst/dokumentierst, brauchst du später nur ein phpdoc-Tool über dein Programm(paket) laufen zu lassen und hast eine fertig verlinkte API-Dokumentation.

        Ich finde, die Verschachtelung entspricht dem Grundsatz "Keep it simple, stupid" (oder so).

        Die Verschachtelung vielleicht, aber beim Lesen musst du ständig is_numeric($key) beachten.
        foreach (...->children as $child) {
          Behandlung_ohne_Ausnahmen_beachten_zu_müssen;
        }
        ist meines Erachtens nach einfacher.

        echo "$verabschiedung $name";

  4. Hallo Freunde des gehobenen Forumsgenusses,

    Zunächst mal herzlichen Dank für die Kritik, sie hat mir sehr geholfen.

    Ich habe nun

    • Den Kontrast erhöht (ist der jetzt hoch genug?)
    • Potentiell überlange HTML-Code-Zeilen umgebrochen
    • Die überflüssigen divs entfernt
    • die Möglichkeit geschaffen, die höchste Liste mit einer ID zu versehen
    • Die Verschachtelung im HTML-Code durch Einrückungen besser erkenntlich gemacht
    • alle Methoden und Eigenschaften ins Englische übersetzt

    Und gebe damit Release 1.1 heraus.

    Habe ich etwas vergessen?

    Gruß
    Alexander Brock

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }