Ankündigung

Einklappen
Keine Ankündigung bisher.

[Abgabe:Mitmachquiz] Diskussionsthread von fab

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Abgabe:Mitmachquiz] Diskussionsthread von fab

    Hmm, interessiert das hier denn jetzt noch jemanden? Ich habe tatsächlich etwas zusammenbekommen, wie gesagt vor allem als Übung für die Symfony Components, werde das auch unabhängig von dem "Quiz" noch etwas weiter bearbeiten. Ziel war ein schlankes, leicht integrierbares und vor allem erweiterbares Gästebuch. Es wird kein Framework benutzt, allerdings auf folgede Komponenten zurückgegriffen:
    - Symfony: sfServiceContainer für Dependency Injection
    - Symfony: sfEvent für Plugins
    - Symfony: sfYaml für Konfiguration
    - eigene: OutputFilter zum Filtern von Daten im View
    - eigene: DecorateAnything als generischer Dekorator für Plugins
    - eigene: TypeSafeEnum als Enum-Datentyp

    Die gesamte Lösung gibt es hier (Plugins und Installationsroutine sind noch nicht implementiert, dies sprengt aber auch den Rahmen der Aufgabe):
    SlimGb at master from schmengler's SlimGb - GitHub

    Ein Beispiel zur Einbindung (voll funktionsfähig):
    PHP-Code:
    <?php
    header
    ('Content-type:text/html;charset=utf-8');
    date_default_timezone_set('Europe/Berlin');

    require_once 
    'SlimGb.inc.php';
    $gb = new SlimGb();
    $gb->initGuestbook();
    ?><html>
    <head>
    <title>SlimGb Demo</title>
    <link rel="stylesheet" href="static/SlimGb.css">
    </head>
    <body>

    <?php echo $gb->include_messages(); ?>

    <?php echo $gb->include_form(); ?>

    <?php echo $gb->include_pagination(); ?>

    <?php echo $gb->include_entries(); ?>

    <?php echo $gb->include_pagination(); ?>

    </body>
    </html>
    Allgemeine Konfiguration (application.link muss auf jeden Fall angepasst werden, damit die Pagination funktioniert!):
    Sourcecode: SlimGb/conf/SlimGb.yaml

    Service-Konfiguration (hier wird die Datenquelle bestimmt, siehe imports-Abschnitt)
    Sourcecode: SlimGb/conf/Services.yaml

    Datenquellen-Konfiguration:

    Sourcecode: SlimGb/datasources/pdo.yaml.php
    Sourcecode: SlimGb/datasources/csv.yaml.php

    Als Standard ist CSV eingestellt, dafür gibt es erstmal nichts zu konfigurieren, auch eine Datei ist schon angelegt, so ist keine weitere Installation nötig, lediglich das runtime-Verzeichnis muss von PHP beschrieben werden dürfen.

    Edit: Ach ja, zum zentralen Punkt, den Datenquellen:
    - Sourcecode, Interface: SlimGb/core/SlimGb/Service/DataSource.php
    - Sourcecode, Implementierung für CSV: SlimGb/core/SlimGb/Service/DataSourceCSV.php
    - Sourcecode, Implementierung für PDO: SlimGb/core/SlimGb/Service/DataSourcePDO.php

    Hier ist übrigens einmal eine Demo-Installation:
    https://demo.linuxkind.de/slimgb/

    Hier ein Klassendiagramm der wesentlichen Klassen:
    Farben:
    hellgelb: keine bes. Bedeutung
    dunkelgelb: entscheidende Klassen für die Datenhaltung
    dunkelgrau: Anwendung (Fassade)
    hellgrau: Konfiguration (DI Container etc.)
    weiß: nur relevant für Plugins



    Uploaded with ImageShack.us
    @fschmengler - @fschmengler - @schmengler
    PHP Blog - Magento Entwicklung - CSS Ribbon Generator


  • #2
    @fab: beim ersten Post erhalte ich ein "Session is invalid". Erwartet hätte ich "please provide your name and a message".
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design before you start to write code!
    2. Discuss and review it together with experts!
    3. Choose good tools (-> Adventure PHP Framework (APF))!
    4. Write clean and reusable software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      Oha, Session is invalid bedeutet allerdings auch nicht dass du nichts eingetragen hast sondern dass der Anti CSRF Token im Formular nicht in deiner Session gefunden wurde. Waren Cookies deaktiviert oder hast du da direkt einen Bug gefunden?
      @fschmengler - @fschmengler - @schmengler
      PHP Blog - Magento Entwicklung - CSS Ribbon Generator

      Kommentar


      • #4
        Cookies sind bei mir by default aktiviert.
        Viele Grüße,
        Dr.E.

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        1. Think about software design before you start to write code!
        2. Discuss and review it together with experts!
        3. Choose good tools (-> Adventure PHP Framework (APF))!
        4. Write clean and reusable software only!
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        Kommentar


        • #5
          Zitat von fab Beitrag anzeigen
          Oha, Session is invalid bedeutet allerdings auch nicht dass du nichts eingetragen hast sondern dass der Anti CSRF Token im Formular nicht in deiner Session gefunden wurde. Waren Cookies deaktiviert oder hast du da direkt einen Bug gefunden?
          Kann ich bestätigen.

          Beim ersten Versuch meinen Eintrag hinzuzufügen bekam ich auch die Meldung "invlaid session...", beim zweitem Absenden wurde er eingetragen.

          Mein Gästebuch ist leider nicht vollständig fertig geworden... ggf. reiche ich es nach sobald ich Zeit habe es zu vervollständigen.
          "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

          Kommentar


          • #6
            Beim ersten Versuch meinen Eintrag hinzuzufügen bekam ich auch die Meldung "invlaid session...", beim zweitem Absenden wurde er eingetragen.
            Bei mir das selbe...
            Signatur:
            PHP-Code:
            $s '0048656c6c6f20576f726c64';
            while(
            $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

            Kommentar


            • #7
              So, ich habe den Post oben mal etwas aufgeräumt und vor allem ein Klassendiagramm angehängt, würde mich auch über generelles Feedback zum Design freuen. Die oben genannten Probleme mit der Demo-Installation sind übrigens mittlerweile behoben, es war natürlich eine zu spät initialisierte Session schuld.

              Das (offensichtlich ) zentrale sfEventDispatcher-Objekt ist für die Kernfunktionalität nicht von Bedeutung, ermöglicht aber mit eventbasierten Plugins fast überall Erweiterungen "einzuhängen".
              @fschmengler - @fschmengler - @schmengler
              PHP Blog - Magento Entwicklung - CSS Ribbon Generator

              Kommentar

              Lädt...
              X