MB: wohlgeformte verschachtelte Listen

moin,

ich hab eine verschachtelte Liste mit PHP generiert. Das Dient für die Argumente der Methoden und Funktionen für ein lesbares Debugging. Ich habe das im HTML 5 stiel in der Form Generiert:

<figure>
  <figcaption>Foobar</figcaption>
  <ul>
    <li>Fuz</li>
    <li>Baz</li>
    <li>
      <figure>
        <figcaption></figcaption>
        <ul></ul>
      <figure>
    </li>
    <li></li>
  </ul>
</figure>

Ist es ok und mekert ein HTML Parser nicht wenn es verschachtelte <figure>-Elemente gibt? Wenn ja, wie kriege ich hin, das ich Überschriften für verschachtelte HTML-Listen bekomme. Vielleicht ein <small>- oder etwa ein <strong>-Element? Die Wichtigkeit der Überschrift sollte gegebensein. In der Überschrift - in meinem Fall - können primitiven Datentypen und Objekte enthalten sein (Ich möchte ungern <div>-Elemente verwenden).

Wie ist es am sinnvollsten primitive Datentypen mit Identifiers gepart in einer Listeanzuzeigen?

lgmb

  1. @@MB

    <figure>
      <figcaption>Foobar</figcaption>
      <ul>
        <li>Fuz</li>
        <li>Baz</li>
        <li>
          <figure>
            <figcaption></figcaption>
            <ul></ul>
          <figure>
        </li>
        <li></li>
      </ul>
    </figure>
    

    Ist es ok und mekert ein HTML Parser nicht wenn es verschachtelte <figure>-Elemente gibt?

    Warum probierst du es nicht aus? Warum liest du nicht in der Spec nach?

    TL;DR: figure darf flow content enthalten. figure ist flow content.

    Die Frage nach der Zulässigkeit verschachtelter figure-Elemente beantwortet nicht die Frage nach der Sinnhaftigkeit.

    Wenn ja, wie kriege ich hin, das ich Überschriften für verschachtelte HTML-Listen bekomme. Vielleicht ein <small>- oder etwa ein <strong>-Element?

    Das lässt sich ohne Kenntnis deines Inhalts nicht sagen. Dein Code ist ein Musterbeispiel dafür, warum Beispielquelltext nicht Foobar, Fuz und Baz enthalten sollte.

    Ist gleichberechtigt mit Fuz und Baz?

    Die Wichtigkeit der Überschrift sollte gegebensein.

    Wenn es sich um eine Überschrift handelt, sollte das Markup als Überschrift gegeben sein.

    Ob es sich um eine Überschrift handelt, lässt sich ohne Kenntnis deines Inhalts nicht sagen.

    LLAP 🖖

    --
    „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
    „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

    —Marc-Uwe Kling
    1. moin,

      Warum probierst du es nicht aus? Warum liest du nicht in der Spec nach?

      Dank für den Link…

      TL;DR: figure darf flow content enthalten. figure ist flow content.

      Danke

      Die Frage nach der Zulässigkeit verschachtelter figure-Elemente beantwortet nicht die Frage nach der Sinnhaftigkeit.

      ich hab wohl die Begrifflichkeiten verwechselt.

      Das lässt sich ohne Kenntnis deines Inhalts nicht sagen. Dein Code ist ein Musterbeispiel dafür, warum Beispielquelltext nicht Foobar, Fuz und Baz enthalten sollte.

      Sorry. Ich hab wohl ein kategorisches und ein konkreten Beispiel eins geschrieben 😕.

      <figure>
        <figcaption>Object(Customer)</figcaption>
        <ul>
          <li>
            <figure>
              <figcaption>array</figcaption>
              <ul>
                <li>firstname : string</li>
                <li>lastname : string</li>
              </li>
            </figure>
          </li>
          <li>
            <figure>
              <figcaption>array</figcaption>
              <ul>
                <li>street : string</li>
                <li>No : int</li>
                <li>postcode : string</li>
                <li>city : string</li>
                <li>country : string</li>
              </ul>
            <figure>
          </li>
          <li>
            <figure>
              <figcaption>Object(System)</figcaption>
              <ul>
                <li>ID : int</li>
                <li></li>
              </li>
            </figure>
          </li>
        </ul>
      </figure>
      

      So konkret genug?

      Wie erwähnt habe ich eine Klasse für den Debug entworfen welches das im Exception--Fall mit $ex->getTrace() arbeitet. wenn args als Key auftaucht, formt eine Klasse das Array um und generiert eine andere Klasse die HTML-Liste.

      Ist gleichberechtigt mit Fuz und Baz?

      ist es

      Wenn es sich um eine Überschrift handelt, sollte das Markup als Überschrift gegeben sein.

      Markup? Sorry in welchem Kontext???

      lgmb

      1. Hallo MB,

        Wenn es sich um eine Überschrift handelt, sollte das Markup als Überschrift gegeben sein.

        Markup? Sorry in welchem Kontext???

        HTML – h1 … h6

        Bis demnächst
        Matthias

        --
        Pantoffeltierchen haben keine Hobbys.
        ¯\_(ツ)_/¯
      2. Hallo MB,

        vom Gefühl her, aber ohne echte Begründung, würde ich sagen: Das ist keine Liste. Der Customer ist ein <article> und die Attributgruppen darunter sind <section>. Die <figcaption>s sind h1/h2 oder h2/h3, je nach dem, was sonst auf der Seite steht. Gibt es weitere Schachtelungsstufen?

        Rolf

        --
        sumpsi - posui - clusi
        1. moin,

          vom Gefühl her, aber ohne echte Begründung, würde ich sagen: Das ist keine Liste. Der Customer ist ein <article> und die Attributgruppen darunter sind <section>. Die <figcaption>s sind h1/h2 oder h2/h3, je nach dem, was sonst auf der Seite steht. Gibt es weitere Schachtelungsstufen?

          das ist nicht meine absicht. Ich hab irgend was halbwegs verwentbares als Foobarusw. reingeschrieben und total unkonkret. Ich hab ja eine Debug Klasse geschrieben alla:

          class Debugger {
            const CODE = [
              1 => 'ERROR',
              2 => '...',
              // ...
          
            private $error = null;
            
            public function __construct() {
                  set_exception_handler( [ $this, 'exception' ] );
                  set_error_handler( [ $this, 'error' ] );
              }
          
            public function error(
              int $code,
              string $message,
              string $file,
              string $line,
              array $trace
            ) : void {
              // Code
            }
          
            public function exception( Throwable $throw ) : void {
              $this->error = new ErrorModel( /* CODE */ );
              // Code
            }
          
            // Methods
          }
          

          Und da wird eine Error Klasse über ListFactory() mit ListConstructor() generiert und in HTML gerendert. Genaueres müsste ich in meinen Code gucken.

          Ich wollte einfach meine 2 Eingangsfragen wissen und die erste - eigentlich beide - hat mir @Gunnar Bittersmann beantwortet.

          lgmb

      3. @@MB

        Ist gleichberechtigt mit Fuz und Baz?

        ist es

        Dann sollte gleichartige Dinge gleichartig ausgezeichnet werden. Was auch heißen kann: innerhalb des li gar nicht:

        <?>Foobar</?>
        <ul>
          <li>Fuz</li>
          <li>Baz</li>
          <li><ul></ul>
          </li>
          <li></li>
        </ul>
        

        LLAP 🖖

        --
        „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
        „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

        —Marc-Uwe Kling
        1. moin,

          Ist gleichberechtigt mit Fuz und Baz?

          ist es

          Dann sollte gleichartige Dinge gleichartig ausgezeichnet werden. Was auch heißen kann: innerhalb des li gar nicht:

          Welche gleichartigen Dinge? Was innerhalb des <li>-Elementes garnicht. Sry, ich bin sehr Begriffsstützig. 😕

          lgmb

          1. Hallo MB,

            Welche gleichartigen Dinge? Was innerhalb des <li>-Elementes garnicht. Sry, ich bin sehr Begriffsstützig. 😕

            in Listen werden normalerweise gleichartige Dinge zusammengefasst.

            Bis demnächst
            Matthias

            --
            Pantoffeltierchen haben keine Hobbys.
            ¯\_(ツ)_/¯
      4. @@MB

        <figure>
          <figcaption>Object(Customer)</figcaption>
          <ul>
            <li>
              <figure>
                <figcaption>array</figcaption>
                <ul>
                  <li>firstname : string</li>
                  <li>lastname : string</li>
                </li>
              </figure>
            </li>
            <li>
              <figure>
                <figcaption>array</figcaption>
                <ul>
                  <li>street : string</li>
                  <li>No : int</li>
                  <li>postcode : string</li>
                  <li>city : string</li>
                  <li>country : string</li>
                </ul>
              <figure>
            </li>
            <li>
              <figure>
                <figcaption>Object(System)</figcaption>
                <ul>
                  <li>ID : int</li>
                  <li></li>
                </li>
              </figure>
            </li>
          </ul>
        </figure>
        
          <?>Object(Customer)</?>
          <dl>
            <div>
              <dt>array</dt>
              <dd>firstname : string</dd>
              <dd>lastname : string</dd>
            </div>
            <div>
              <dt>array</dt>
              <dd>street : string</dd>
              <dd>No : int</dd>
              <dd>postcode : string</dd>
              <dd>city : string</dd>
              <dd>country : string</dd>
            </div>
            <div>
              <dt>Object(System)</dt>
              <dd>ID : int</dd>
              <dd></dd>
            </div>
          </dl>
        

        LLAP 🖖

        --
        „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
        „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

        —Marc-Uwe Kling
        1. moin,

          Sorry. Ichverstehe nicht was die Beiden Codes bedeuten. Der eine "ja" und der andere "nein", oder Alternativen???

          lgmb

          1. Hallo MB,

            Sorry. Ichverstehe nicht was die Beiden Codes bedeuten. Der eine "ja" und der andere "nein", oder Alternativen???

            Der zweite beschreibt eine semantisch passende Struktur für die ausführliche Darstellung von zu debuggenden Objekten.

            Bis demnächst
            Matthias

            --
            Pantoffeltierchen haben keine Hobbys.
            ¯\_(ツ)_/¯
            1. moin,

              Dankeschön 😀

              lgmb

          2. @@MB

            moin,

            Sorry. Ichverstehe nicht was die Beiden Codes bedeuten. Der eine "ja" und der andere "nein", oder Alternativen???

            Der eine ist deiner, der andere meiner.

            Durch die Rahmenlinien ist das aber wirklich nicht gut erkennbar:

            Aua, was beißt mich da ins Bein? Ah, ein Knoten im Taschentuch …

            LLAP 🖖

            --
            „Man kann sich halt nicht sicher sein“, sagt der Mann auf der Straße, „dass in einer Gruppe Flüchtlinge nicht auch Arschlöcher sind.“
            „Stimmt wohl“, sagt das Känguru, „aber immerhin kann man sich sicher sein, dass in einer Gruppe Rassisten nur Arschlöcher sind.“

            —Marc-Uwe Kling
            1. moin,

              Sorry. Ichverstehe nicht was die Beiden Codes bedeuten. Der eine "ja" und der andere "nein", oder Alternativen???

              Der eine ist deiner, der andere meiner.

              danke für den Hinweis.

              Durch die Rahmenlinien ist das aber wirklich nicht gut erkennbar:

              Du meinst die zwei Rahmenlinien in deinem Bild, die meinen und deinen code, im Beispiel, begrenzen?

              Aua, was beißt mich da ins Bein? Ah, ein Knoten im Taschentuch …

              Sry, das checke ich nicht. Ich vermute es eine Floskel die ich nicht verstehe. Wenn dem so ist, bedarf es keiner weiteren Bemerkung.

              lgmb

              1. Hallo MB,

                Du meinst die zwei Rahmenlinien in deinem Bild, die meinen und deinen code, im Beispiel, begrenzen?

                Ja.

                Bis demnächst
                Matthias

                --
                Pantoffeltierchen haben keine Hobbys.
                ¯\_(ツ)_/¯
  2. Tach!

    ich hab eine verschachtelte Liste mit PHP generiert. Das Dient für die Argumente der Methoden und Funktionen für ein lesbares Debugging.

    Man kann natürlich Debug-Ausgaben auch vergolden. Aber für solch einen temporären Zweck spielt es überhaupt keine gesteigerte Rolle, ob der HTML-Code gültig oder sinnvoll ist. Das schaut nur der Entwickler an, und es muss lediglich etwas brauchbares auf dessen Bildschirm erscheinen. Im Prinzip reicht auch Plaintext mit Leerzeichen-Einrückungen. Du kannst das aber selbstverständlich auch als Fingerübung ansehen und trotzdem sinnvolles HTML erzeugen. Für den eigentlichen Zweck wüsste ich aber besseres mit meiner Zeit anzufangen und nähme eine IDE mit eingebautem Debugger.

    dedlfix.

    1. moin,

      ich hab eine verschachtelte Liste mit PHP generiert. Das Dient für die Argumente der Methoden und Funktionen für ein lesbares Debugging.

      Man kann natürlich Debug-Ausgaben auch vergolden. [...]

      wenns so einfach wäre 😕. Ich vergess alles, überlese etwas, interpretiere falsch, lasse was aus und der gesamte Kontext ändert sich usw.! Es ist schon gut was ich mache und dann noch die Farbgestaltung und monospace schrift verpasst fertig. Mir hilfts sehr!

      Ich finds wirklich fantastisch wenn andere ohne das vergoldete klar kommen. Ich hingegen bin auf das funkeln angewiesen und ich bin auch extrem froh, das ich einen IDE der intelisense verfügt. So kann ich komplexen Code schreiben. Mit der PHPDoc bin ich auf der ganz sicheren Seite!!!

      lgmb

    2. moin,

      ich hab eine verschachtelte Liste mit PHP generiert. Das Dient für die Argumente der Methoden und Funktionen für ein lesbares Debugging.

      Man kann natürlich Debug-Ausgaben auch vergolden. […] Für den eigentlichen Zweck wüsste ich aber besseres mit meiner Zeit anzufangen und nähme eine IDE mit eingebautem Debugger.

      Kannst du mir n guten IDE mit eingebautem Debugger emphelen???

      lgmb

      1. Tach!

        Kannst du mir n guten IDE mit eingebautem Debugger emphelen???

        Ich verwende PhpStorm von JetBrains (kostet je nach Lizenzmodel). Das Problem bei PHP ist allerdings nicht nur, eine entsprechende IDE zu haben, sondern man muss auch noch PHP um eine Debug-Extension (XDebug) erweitern, damit es mit der IDE kommunizieren kann. Was da zu tun ist, ist aber dokumentiert. Das Vorbereiten zum Debuggen beschränkt sich dann auf Mausklicks zum Setzen von Breakpoints, anstatt dass man die Scripts mit Debug-Code erweitert und hinterher wieder aufräumen muss. Man kann dann sämtliche Variablen und den Callstack untersuchen und nicht nur das, was man in seinem Debug-Code berücksichtigt hat. Schrittweises Voranschreiten und weiter untersuchen zu können, ist auch effizienter als abzubrechen, neuen Debug-Code einzubauen und wieder zu starten.

        dedlfix.

        1. moin,

          Tach!

          Kannst du mir n guten IDE mit eingebautem Debugger emphelen???

          Ich verwende PhpStorm von JetBrains

          Danke. geht das auch mit NetBeans?

          […] sondern man muss auch noch PHP um eine Debug-Extension (XDebug) erweitern, damit es mit der IDE kommunizieren kann.

          Ich weis

          Schrittweises Voranschreiten und weiter untersuchen zu können, ist auch effizienter als abzubrechen, neuen Debug-Code einzubauen und wieder zu starten.

          Ich möchte ja nur einen Fehlerfall Dokumentieren. Daher habe ich das gemacht. "Search And Destroy" ist nicht aufgabe meiner Debugger Klasse

          dedlfix.

          lgmb

  3. Debuggen beginnt damit daß man Datenstukturen nicht unnötig schachtelt. Zur visuellen Darstellung Solcher braucht man kein HTML, da gibt es Dumper. MFG

    1. moin,

      Zur visuellen Darstellung Solcher braucht man kein HTML, da gibt es Dumper.

      Ich referenziere da 1755244#m1755244

      lgmb

      1. Is ok. Süntaxhaileitnings hat mich auch son geholfe. Zeigt aber auch manchmal Fehler wenn gar keiner ist. Man sollte auch mal selber denken ab und zu. Muss man machen, kann man aber nicht. Schöne Sonnabend!

        PS: Mein nächstes Programm schreib ich wie ein Affe auf Schreibmaschine das Wort Schäksbier tippt. Also wiviele Versuche er dazu braucht wird dann mitgezählt.