Jeena Paradies: PHP Zend-Framewok Installation nutzen

Beitrag lesen

Hallo,

(Authentifizierung) ist schon vorhanden und muss mitgenutzt werden

Da würde ich ne klasse Authentification machen mit methoden wie

void authenticate($user, $password)
bool isAuthenticated();
array errors();

$user wäre ein Objekt der Klasse User die dann einen solchen User repräsentiert mit sachen wie:

  • username
  • email
  • firsname
  • lastname
  • passwordhash

save() // speichert diesen user in der datenbank
destroy() // löscht den user aus der datenbank

Da so etwas ja bei jedem Model vorkommt (bei dir User, GuestbookEntry, Permission, Comment, etc.) gibt es so was schon fertig programmiert und heißt ORM Object-Relational Mapping (ein Paar Beispiele wären http://www.propelorm.org/, http://www.doctrine-project.org/, etc.)

(Berechtigungen)    sit schon vorhanden und muss "irgendwie" mitgenutzt werden

Ne klasse Permission mit Methoden wie;

bool userCan($user, $action, $object)
// $action ist z.b. create, update, delete, show
// $object ist z.b. ein anderer User (admin sollte z.b. andere user löschen dürfen) oder GuestbookEntry, Comment, etc.

Detail-Darstellung für Alle, satzweise oder seitenweise
Listendarstellung mit Kurzdaten
Neueintrag
Editierungsmöglichkeit (mit Cookie) innerhalb 24 Stunden
Freigabe/Sperre (Admin)
Kommentar (durch Alle)

Das müsste in 3 Bereiche unterteilt werden die models, den controller und die views (templates).

// Controller
GuestbookEntryController:
void index()
void show($id) {
 // nur als Beispiel in Pseudocode
 $gb_entry = GuestBookEntryModel::find($id);
 $template = new Template("/guestbook_entry/show.phtml");
 $template->gb_entry = $gb_entry;
 $template->run();
}
void create($array)
void update($id, $array)
void destroy($id)

// Models
GuestbookEntryModel:

  • id
  • user
  • title
  • body
    void save()
    bool validate()
    void destroy()
    array comments()

CommentModel:

  • id
  • user
  • guestbook_entry_id
  • body
    void save()
    bool validate()
    void destroy()

UserModel

  • username
  • email
  • firsname
  • lastname
  • passwordhash
    void save()
    bool validate()
    void destroy()

// Templates
Können normale .phtml-Dateien sein oder man benutzt so was wie Smarty.

/views/guestbook_entry/show.phtml

<div class="guestbook-entry">
 <h2><?php echo $this->gb_entry->getTitle() ?></h2>
 <p>User: <?php echo $this->gb_entry->user->getUsername() ?></p>
 <p><?php echo $this->gb_entry->getBody() ?></p>
</div>

Es sollen nur die Klassen geladen werden, die für das jeweilige Dokument am Browser erforderlich sind.

Das ist ehrlich gesagt das letzte deiner Probleme, die Implementierung dessen wird vielleicht die Seiten vielleicht 2 Milisekunden früher ausgeben und Autoload löst das Problem ja auch einigermaßen elegant.

Zum Erben, du könntest dir eine klasse Model basteln, die schon sachen wie destroy() implementiert weil die allgemeingültig sind wenn du in jedem Model eine $id hast und davon dann in GuestbookEntryModel, CommentModel und UserModel erben, dann brauchst du das da einzeln nicht mehr implementieren.

Ansonsten, aber das ist für den Anfang vielleicht overkill, man sieht dass GuestbookEntryModel und CommentModel fast gleich aussehen, sie unterscheiden sich eigentlich nur durch title in GuestbookEntryModel, da könnte man sich überlegen ob GuestbookEntryModel nicht von CommentModel erben könnte und nur durch $title erweitert wird.

Jeena

0 101

PHP OOP Klassenaufteilung

Tom
  • php
  1. 0
    Jeena Paradies
    1. 0
      jobo
      1. 0
        Malcolm Beck´s
        1. 0
          jobo
          1. 0

            PHP Zend-Framewok Installation nutzen

            Malcolm Beck´s
            1. 0
              Jeena Paradies
              1. 0
                Malcolm Beck´s
                1. 0
                  Jeena Paradies
                  1. 0
                    Malcolm Beck´s
                    1. 0
                      Jeena Paradies
                    2. 0
                      jobo
                2. 0
                  jobo
                  1. 0
                    Malcolm Beck´s
                    1. 0
                      Jeena Paradies
                      1. 0
                        Tom
                        1. 0
                          Jeena Paradies
                          1. 0
                            Tom
                            1. 0
                              Jeena Paradies
                              1. 0
                                Tom
                                1. 0
                                  Jeena Paradies
                                  1. 0
                                    dedlfix
                                    1. 0
                                      Jeena Paradies
                                      1. 0
                                        dedlfix
                                        1. 0
                                          Jeena Paradies
                                2. 0
                                  Sven Rautenberg
                              2. 0
                                Malcolm Beck´s
                                1. 0
                                  Jeena Paradies
                                  1. 0
                                    Malcolm Beck´s
                            2. 0
                              Malcolm Beck´s
                              1. 2
                                Sven Rautenberg
                                1. 0
                                  Malcolm Beck´s
                                  1. 0
                                    Sven Rautenberg
                                    1. 0
                                      Malcolm Beck´s
                                      1. 8
                                        Sven Rautenberg
                                        1. 0
                                          Malcolm Beck´s
                                        2. 2
                                          dedlfix
                                        3. 0

                                          PHP OOP, wie eine Klassenhierarchie entsteht

                                          Tom
                                        4. 0
                                          Malcolm Beck´s
                                          1. 0
                                            Jeena Paradies
                                            1. 1
                                              dedlfix
                                            2. 1
                                              Sven Rautenberg
                                              1. 0
                                                Jeena Paradies
                                          2. 1
                                            dedlfix
                                            1. 0
                                              Sven Rautenberg
                                              1. 0
                                                dedlfix
                                          3. 2
                                            Sven Rautenberg
                                            1. 0
                                              dedlfix
                                              1. 0
                                                Sven Rautenberg
                                                1. 0
                                                  dedlfix
                                              2. 0
                                                Tom
                                                1. 0
                                                  dedlfix
                                            2. 0
                                              Malcolm Beck´s
                                              1. 0
                                                Sven Rautenberg
                                                1. 0
                                                  Claudius L.
                                                  1. 0
                                                    Claudius L.
                                                  2. 1
                                                    dedlfix
                                                    1. 0
                                                      Claudius L.
                                                      1. 2
                                                        Sven Rautenberg
                                                  3. 0
                                                    Sven Rautenberg
                                                2. 0
                                                  Malcolm Beck´s
                            3. 0
                              Sven Rautenberg
                3. 1
                  Matti Mäkitalo
                  1. 0
                    Malcolm Beck´s
                4. 0
                  Vinzenz Mai
                  1. 0
                    Malcolm Beck´s
                    1. 0
                      jobo
        2. 0
          dedlfix
          1. 0
            Malcolm Beck´s
            1. 0
              Malcolm Beck´s
              1. 1

                Uralt-Software

                Kai345
                • meinung
                1. 0
                  Malcolm Beck´s
                  1. 0
                    Kai345
                    1. 0
                      Malcolm Beck´s
            2. 0
              dedlfix
      2. 0
        Jeena Paradies
  2. 2
    Sven Rautenberg
    1. 0
      Tom
  3. 0
    hotti
    1. 0
      dedlfix
      1. 0
        Jeena Paradies
        1. 2
          dedlfix
          1. 0
            Jeena Paradies
      2. 0
        hotti
        1. 0
          Jeena Paradies
          1. 0
            Tom
            1. 0
              Jeena Paradies
              1. 0
                dedlfix
                1. 0
                  Jeena Paradies
                  1. 0
                    Sven Rautenberg
                    1. 0
                      Jeena Paradies
                      1. 0
                        dedlfix
                2. 0
                  Tom
                  1. 0
                    dedlfix
            2. 0
              Sven Rautenberg
        2. 2
          dedlfix
        3. 0
          hotti
      3. 0
        Matti Mäkitalo
        1. 0
          dedlfix
  4. 1
    jobo
  5. 0
    hotti