Muster :: undefobject.

Eine Version des undefinierten Objekts (Nullobjekt) Muster
Jetzt downloaden

Muster :: undefobject. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • John Napiorkowski
  • Website des Verlags:
  • http://search.cpan.org/~jjnapiork/

Muster :: undefobject. Stichworte


Muster :: undefobject. Beschreibung

Muster :: undefobject ist eine Version des nichtfinierten Objekts (NULL-Objekt) -Muster. Wenn Sie beispielsweise so etwas wie DBIX :: Klasse verwenden, können Sie möglicherweise herausfinden, ob ein bestimmter Benutzer in einer Datenbank vorhanden ist, und dann folgen Sie den Beziehungen des Benutzers für einen bestimmten Zweck: My $ primary = $ SCHEMA -> resultSet ('Benutzer ') -> Finden (100) -> Telefon_numbers -> Primär; Diese Anrufkette wird jedoch während der dynamischen Aufrufe hart sterben, falls der Methodenaufruf (100) keinen Benutzer findet. Dieser Fehler würde einen Wert von undef zurückgeben und dann eine nachfolgende "Anrufmethode" an einem undefinierten Wert nicht an einem nicht definierten Wert " > resultSet ('user')) {$ primary = $ user -> telephanty_numbers -> primär;} else {$ primary = "Unbekannte Zahl";} Natürlich müssen Sie wirklich sicher sein, Sie müssen den defensiven Code alle schreiben der Weg hinunter die Kette, falls die Beziehungen nicht erforderlich sind. Bit eines Codes riechen für ein gutes Objektorientiertes Design. Muster :: undefobject bietet einen möglichen Ansatz an, um dieses Problem anzusprechen. Diese Klasse definierte eine Werksmethode, die "vielleicht" namens "Vielleicht" akzeptiert und dieses Argument angibt, wenn er definiert ist. Andernfalls wird das Argument zurückgibt, wenn es definiert ist. Andernfalls Gibt eine Instanz von Mustern zurück: Undefobject, die Autoloa definiert D so, dass egal welche Methode aufgerufen wird, er wird immer zurückgegeben. Auf diese Weise können Sie beliebige Länge von Methodenketten dieses anfänglichen Objekts anrufen, ohne eine Ausnahme zu verursachen, um Ihren Code zu stoppen. Dieses Objekt überlastet den booleschen Kontext so, dass er bei der Beurteilung als BOOL immer falsch zurückgibt. Wenn Sie versuchen, es auf andere Weise zu bewerten, erhalten Sie eine Ausnahme. Auf diese Weise können Sie das obige Codebeispiel durch Folgendes ersetzen: Verwenden Sie Muster: Undefobject; Meine $ primary = Muster :: undefobject -> vielleicht ($ sema-> resultset ('user') -> Suchen (100)) -> telefonisch_numbers -> primär || 'Unbekannte Nummer'; Sie können den verfügbaren Export möglicherweise verwenden, um dies etwas prägnant zu machen (insbesondere wenn Sie es mehrmals verwenden müssen). Verwenden Sie Muster: Undefobject 'vielleicht'; Meine $ primary = vielleicht ($ schema-> resultset ('user') -> find (100)) -> telephone_numbers -> primär || "Unbekannte Zahl"; persönlich finde ich, dass dieses Muster zu einem prägnanten und lesenderen Code führt, und es provoziert auch tiefer, obwohl man sich über ähnliche Techniken verwenden kann, um bestimmte Arten von Präsentationslogik besser einkapseln zu können. Mein $ Name = vielleicht ($ user_rs-> Suchen (100)) -> Name || 'Unbekannter Benutzername'; Homepage des Produkts


Muster :: undefobject. Zugehörige Software