Es ist ein Model und es sieht gut aus

| 3 Kommentare

Vor ein paar Wochen habe ich einen Artikel über Data Mapper geschrieben und bin dabei nur recht oberflächlich auf die Models eingegangen. Eigentlich schade, da in den Models sehr viele Techniken sinnvoll zusammen verwendet werden können und sie zudem auch einen, wenn nicht sogar den, zentralen Punkt in einer Anwendung darstellen.

Eigentlich sind es doch nur einfache Datenklassen, was macht sie denn so besonders? Im Prinzip richtig, die Models geben eine bestimmte Datenstruktur vor und können als solche beliebig verwendet werden.

Nun ist es zum Beispiel sehr bequem, die Daten mittels verschiedener Setter und Fluent Interface zu setzen oder das komplette Objekt in einer foreach-Schleife auszugeben.

Dabei sollen gewisse Funktionen (Prüfung etc.) über alle Zugriffsmöglichkeiten sichergestellt werden. Daher dachte ich mir, ich werde mal eine kleine Serie um das Thema schreiben und die einzelnen Techniken erklären.

Also vorab ein kurzer Überblick, was ich vorhabe. Ich werde eine Basisklasse für Models aufbauen, die uns sämtliche Möglichkeiten des Datenzugriffs erlaubt (Getter/Setter, Array oder Objektschreibweise). Dafür werde ich etwas mit Reflections und Magic Methods arbeiten, sowie die Methoden des SPL-Interfaces ArrayAccess implementieren.

Für die Verwendung in foreach-Schreifen wird zusätzlich auch noch das SPL-Interface Iterator implementiert. Die Konfiguration der konkreten Modelle soll über die Eigenschaften der abgeleiteten Klasse erfolgen und zu guter Letzt möchte ich auch noch die Möglichkeit haben, das jeweilige Model zu beobachten.

Da kann man mal wieder sehen, wie realitätsnah doch Programmierung sein kann.

An der Stelle werde ich dann auf jeden Fall noch etwas auf die Interfaces SplObserver, SplSubject und die Klasse SplObjectStorage eingehen.

So sieht dann erstmal der Programmplan für die folgenden Artikel aus:

3 Kommentare

  1. Pingback: Es ist ein Model und es sieht gut aus – Das Grundgerüst « ebene7

  2. Pingback: Implementieren einer einfachen Plugin-Schnittstelle « ebene7

  3. Pingback: Stringumwandlung Underscore/CamelCase « ebene7

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.


Schlagwörter: A/B-Test, AbstractType, Adapter, AddOn, Administration, Ajax, Amazon, Animation, Annotations, Anonyme Klasse, Ant, Apache, API, Array, ArrayAccess, Attachment, Auftrag, Ausbildung, Auswertung, Authentifizierung, AutoLoader, AWS, Bedienung, Bedingung, Benchmark, Berechtigung, Berlin, Bildbearbeitung, Bildschirmfoto, Blog, Blogroll, BOM, Bootstrap, Bot, Browser, Bugtracker, Byte Order Mark, Bücher, Cache, CakePHP, Call-Center, Callback, CamelCase, Canvas, Captcha, CDN, Cheatsheet, CLI, Clickout, Closure, Cloud, CodeSniffer, Collection, Community, Comparator, Config, Contest, Controller, Converter, CouchDB, Countable, Cronjob, CRUD, CSS, CSV, CustomLibrary, Custom_Model, Daemon, Data Mapper, Datei, Datenbank, Datenstruktur, Datentypen, Dating, Datum, Debug, Decorator, Dekorierer, Design, Design Patterns, Doctrine, Dokumentation, Dump, Duplikat, each, EC2, Eclipse, Email, Entwicklung, Entwurfsmuster, Enum, Erweiterung, Event, Eventhandling, Exception-Handling, Extension, Facebook, Factory, Fallback, Fehler, Fehlermeldung, Filter, Firefox, Flash, flexigrid, Foreach, Formatierung, Formular, Framework, FTP, Funktion, Futon, ga:pi(), Getter, Google Analytics, Hash, Hash-Bang, Header, htaccess, HTML5, htpasswd, HTTP, HTTPS, IDE, If, Implementierung, InnoDB, Interceptor, Interface, Internet Explorer, isset, Iterator, Java, JavaScript, Job, jQuery, Kommentar, Konfiguration, Konsole, Kontrollstruktur, kopieren, kostenlos, Kundenbetreuung, Late Static Binding, Layout, Links, Linux, Listeners, Lizenz, Logging, Löschen, Magento, Magic Methods, Manual, ManyToMany, Marketing, Methode, Model, Monolog, MVC, MySQL, NetBeans, Network, Nirvanix, Objekt, Observable, Observer, OneToMany, Online Tool, OOP, Open Source, Operator, OR-Mapper, Order, ORM, O’Reilly, Parameter, Partnersuche, Passwort, Performance, PHP, php.ini, PHP hates me, phpMyAdmin, PHPUnit, Plugin, Popup, Proxy, Prüfsumme, Prüfung, QR-Code, Qualitätssicherung, Query, Queue, Redesign, Refactoring, Reflection, Request, Response, Responsive Design, Rest-API, Rockstar, Rollback, Routing, S3, Samba, Scheifen, Schleife, Schutz, Screenshot, Secure Shell, Selbstreferenz, Server, Setter, setTimeout, Shop, Sicherheit, Sicherung, Sichtbarkeit, Singleton Pattern, Skin, SOAP, Software, Sortierung, Sourcecode, Spam, Speicherproblem, Spickzettel, SPL, Splittest, SSH, SSL, Stammtisch, Statement, static, Statistik, Status, Stellvertreter, Strategy Pattern, Stream, String, Stuttgart, Stylesheet, Subversion, Sun VirtualBox, Support, SVN, Switch, Symfony, Symfony2, Symfony Live, Tag, Template, Template Method, Ternär Operator, Testing, Theme, Thumbnail, Tool, Tour, Tracking, Twig, Twitter, Type-Cast, Ubuntu, Umwandlung, Underscore, unset, Update, Upload, Url, User Story, Validierung, Vererbung, Versionskontrolle, Versionsnummer, Verzweigung, Video, Videospiel, Virtualisierung, Visitor Pattern, Vorschaubild, walk, Warteschlange, Webserver, Webservice, Weiterleitung, Werkzeug, Windows, WindowsAzure, WordPress, Wrapper, Writer, XML, Youtube, Zeitschleife, Zeitsteuerung, Zend Framework, Zend_Application, Zend_Cloud, Zend_CodeGenerator, Zend_Http_Client, Zend_Reflection, Zend_Service, ZPress, Zugangskontrolle, Zugriffsmethode