Frage

Lassen Sie uns sagen, dass ich ein User-Modell haben. Würde ich Methoden auf das Modell setzen selbst oder als Vorlage, so kann ich es von dem Objekt Benutzertabelle zugreifen?

Mit anderen Worten, das ist mehr bevorzugt:

$u=new User();
$u->register($username, $password, $email);

oder

$userTable = Doctrine::getTable('User');
$userTable->register($username, $password, $email);

Mein Instinkt wäre der zweite sein, da es logisch mehr Sinn macht, aber was Dinge wie Passwort-Wechsel, die Anmeldung, etc? Soll ich wirklich die auf dem User-Modell setzen, während ich Dinge wie Register auf dem Benutzertabellenobjekt halten?

War es hilfreich?

Lösung

Es wird wahrscheinlich keine vollständige Antwort auf Ihre Frage, aber Sie könnten durch einen Blick auf den Folien, wenn die Play-Doh: Modellieren der Objekte Konferenz, die Matthew Weier O'Phinney vor ein paar Tagen veröffentlicht; es enthält nette Sachen, die Sie denken über Modelle machen könnten; -)

(Sie hat mich zum Nachdenken .. Aber ich kann noch keine endgültige Antwort auf Ihre Frage geben: Ich würde sagen, „es kommt“ ... Aber nicht sicher, auf was ^^)

Wahrscheinlich in der Situation einer großen Anwendung, würde ich eine weitere Schicht verwendet werden:

  • Modell, auf die Daten zugreifen
  • "Service", zu manipulieren, um sie; in der Lage, mehr zu tun, als das, was ich in dem Modell setzen würde ... Und nicht, dass im Controller mit, wo es gehört nicht
  • Und natürlich, Regler und Ansichten

Aber Sie werden nie alle ... zustimmen bekommen Also würde ich einen Weg, sagen wählen, und stellen Sie sicher, dass jeder in Ihrem Team hat auf diese Weise für das gesamte Projekt: Es gibt nichts Schlimmeres, als zu viele verschiedene Arten gemischt in einem Projekt / Bewerbung!

Andere Tipps

Im Allgemeinen, wenn die Dinge auf eine bestimmte Instanz eines Benutzers beziehen, das heißt: ich oder du, sie gehören in der Benutzerklasse. Wenn sie auf eine Gruppe von Benutzern beziehen, oder wir den Anwender nicht noch. (Dh: sie aus der Datenbank geladen), dann gehören sie in der Tabelle Klasse

ich tun würde Ihr Beispiel als:

class UserTable {
  function register($username, $password, $email) {
    $user = new User;
    $user->username = $username;
    $user->password = $password;
    $user->email = $email;
    $user->save():
  }
}

Die Menschen werden darüber streiten, wo einige Dinge gehören aber, und Einsparung ist einer von ihnen! Ich weiß, Propel, die eine andere ähnliche PHP ORM ist ein Verfahren, in seiner Tabelle gleichwertig sowie in seinem Objekt Äquivalent speichern enthält, und Ihre Registrierung ist eine Art analog dazu. So sicher, dass jemand wird entlang bald die andere Seite zu argumentieren!

die anderen Fragen zu beantworten, meiner Meinung nach:

Passwortänderung gehört im User, auf jeden Fall - Sie das Kennwort eines Benutzers ändern, es ist nur ein Feld zu ändern

.

Log in der Tabelle Klasse sein sollte -. Es ist ein Spezialfall abrufen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top