php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.05.2011, 15:35  
Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Lapayo befindet sich auf einem aufstrebenden Ast
Standard Designvorschlag für ein CMS mit MVC Pattern

Hallo liebe PHP.de Community,
da ich den aktuellen Code meines CMS nicht mehr schön finde, habe ich beschlossen, dieses neu zu schreiben.

Ich habe zurzeit folgenden Aufbau:
Es gibt eine ManagerClass, welche von der Index.php aufgerufen wird und mit Parametern wie Class-Folder, Controller-Folder, Modell-Folder etc versorgt wird.
Daraufhin startet der Manager und guckt ob der $_GET['site'] gesetzt ist und wenn ja, in der Datenbank prüft, ob dies erlaubt ist.
Wenn ja, läd er den dazugehörigen Controller, welcher eine Funktion: neededRights(); bereitstellt. Diese gibt zurück, welche Rechte der Aufrufer haben muss, um den Controller zu nutzen. Wenn er diese nicht hat, ruft der Manager einen Controller auf, welcher die Mangelnden Rechte bearbeitet ("Zugriff verweigert")
Sollte der User nicht eingelogt sein, wird ein LoginController vom Manager aufgerufen, welcher sich um den Login des Users kümmert.
Sollte der Benutzer nun alle Rechte haben, welche der Controller fordert, wird ->run(); vom Manager im Controller aufgerufen und dieser macht dann, was er zutun hat.
Vorher ruft der Controller standardmäßig noch diverse Klassen, wie die Templateclass, die Datenbankclass, sowie die Userclass vom Manager ab, falls er diese benötigt.

Jetzt wollte ich euch gerne Fragen, was ihr von diesem Aufbau haltet und wie man ihn verbessern kann. (Dies ist mein aktueller Aufbau)

Ein paar zusätzliche Fragen:
- Wie kann man einen View schön umsetzen?
- Edit/Add/Delete in einem Controller mit unterschiedlichen Aktionen? Wenn ja, soll die Aktion vom Manager bestimmt werden, oder vom Controller selber?

So jetzt bin ich mal gespannt und hoffe auf viele Antworte.

MfG Simon

Geändert von Lapayo (01.05.2011 um 15:49 Uhr).
Lapayo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.05.2011, 18:56  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Simon,

du verwendest sehr viele Pattern-Begriffe, die du aber ein wenig unsicher durcheinander würfelst. Vielleicht sprechen wir vom gleichen, vielleicht aber auch nicht.

Ich beantworte mal deine Fragen chronologisch:
Zitat:
Daraufhin startet der Manager
Der Manager scheint mir soetwas wie ein Front-Controller zu sein. Das ist für den Anfang schon mal nicht schlecht. Dieser sollte dir - allgemein formuliert - das Setup der Request-Verarbeitung erledigen und die notwendigen Aktionen ausführen, bis der View/die Views geladen/ausgeführt werden.

Zitat:
Sollte der User nicht eingelogt sein, wird ein LoginController vom Manager aufgerufen, welcher sich um den Login des Users kümmert.
Warum koppelst du das direkt an einen (MVC-)Controller? Für mich ist das immer noch ein Stück Software, das als Front-Controller-Action ausgeführt werden sollte.

Zitat:
Vorher ruft der Controller standardmäßig noch diverse Klassen, wie die Templateclass, die Datenbankclass, sowie die Userclass vom Manager ab, falls er diese benötigt.
Warum? Ich würde versuchen, diese Abhängigkeiten soweit aufzulösen, dass Manager und Controller nichts voneinander wissen und auch die jeweiligen Klassen nur diejenigen weiteren Klassen aufrufen, die sie auch brauchen.

Zitat:
- Wie kann man einen View schön umsetzen?
Sofern du einen sehr flexible View-Schicht nach MVC/HMVC haben möchtest, schau dir mal das Tutorial Erstellen einer Webseite ansehen.

Zitat:
- Edit/Add/Delete in einem Controller mit unterschiedlichen Aktionen? Wenn ja, soll die Aktion vom Manager bestimmt werden, oder vom Controller selber?
Das würde ich in mehreren MVC-Controllern abfassen, die unabhängig vom Manager sind. Was genau ausgeführt wird, muss natürlich irgendwer bestimmen. Das kann ein Front-Controller erledigen, kann aber auch durch einen Page-Controller (Inhalt der Präsentations-Schicht/View-Schicht) bestimmt werden.
__________________
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!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 01.05.2011, 20:13  
Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Lapayo befindet sich auf einem aufstrebenden Ast
Standard

Hallo, danke für deine Antwort.
Bei Manager haben wir vom selben gesprochen.

Zitat:
Warum koppelst du das direkt an einen (MVC-)Controller? Für mich ist das immer noch ein Stück Software, das als Front-Controller-Action ausgeführt werden sollte.
Ich habe dies direkt an einen MVC Controller geknüpft, da eine Loginseite ja auch nur eine Seite ist, welche angezeigt werden muss. Die Eingaben werden dann ausgewertet und an das Benutzersystem zur Überprüfung weitergegeben.

Zitat:
Warum? Ich würde versuchen, diese Abhängigkeiten soweit aufzulösen, dass Manager und Controller nichts voneinander wissen und auch die jeweiligen Klassen nur diejenigen weiteren Klassen aufrufen, die sie auch brauchen.
Aber wie löse ich es dann, dass ich nicht bei einem Seitenaufruf mehrere Datenbankverbindungen habe?
Zum Beispiel braucht ja einmal das Usermodell einmal eine Datenbankverbindung, um die Usereingaben zu verifizieren.
Dann benötigt später auch zum Beispiel das NewsModel eine Datenbankverbindung, um die News xy auszulesen.

Oder ist es besser, all die Klassen als Singleton aufzubauen (Oder direkt statisch), was jedoch die Möglichkeit nehmen würde, z.B. mehrere Datenbankverbindungen aufzubauen.

Deinen Linkempfehlung werde ich mir gleich mal anschauen.

Ich bedanke mich schonmal.

MfG Simon
Lapayo ist offline   Mit Zitat antworten
Alt 01.05.2011, 20:43  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Die Seite, oder ein Formular oder was auch immer hat da sowieso nix verloren. Ein Login-, genauer Auth-„Modul“ (Action, wie auch immer) im Controller kann den Loginstatus verwalten, eine Auth-Anfrage verarbeiten oder ggf. ein Auth-Modul-View laden, aber mehr auch nicht. Ich würde zu einem weiteren MVC allein für die Auth/Login-Funktionalität raten, dann hast Du eine logische Verbindung zwischen View (inkl. Form mit name-Attributen) und dem entspr. Controller (und den aus dem name-Attributen resultierenden Anfrageparametern). Das entspricht wohl so etwa dem, was Doc als HMVC bezeichnet, mal abgesehen von der Verwaltungsstruktur der einzelnen MVC-„Bausteine“.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.05.2011, 20:50  
Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Lapayo befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
erstmal danke für deinen Link dr. e.
Er hat mir schon etwas weiter geholfen und ich denke mir wird da schon was schönes einfallen für den View.

Und @nikosch:
Ich glaube du hast mich falsch verstanden. (Oder ich dich)

Zitat:
Die Seite, oder ein Formular oder was auch immer hat da sowieso nix verloren. Ein Login-, genauer Auth-„Modul“ (Action, wie auch immer) im Controller kann den Loginstatus verwalten, eine Auth-Anfrage verarbeiten oder ggf. ein Auth-Modul-View laden, aber mehr auch nicht.
Den HTML-Teil wollte ich nicht in den Front-Controller schreiben.
Ich wollte, dass der Front-Controller einen normalen Controller läd, welcher dann das View für die Loginseite läd. Danach sollte er dann noch fähig sein, die Eingaben an das Authsystem weiterzugeben.

Für weitere Tipps bin ich natürlich sehr dankbar.

MfG Simon
Lapayo ist offline   Mit Zitat antworten
Alt 01.05.2011, 20:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Danach sollte er dann noch fähig sein, die Eingaben an das Authsystem weiterzugeben.
Welcher jetzt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.05.2011, 20:57  
Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Lapayo befindet sich auf einem aufstrebenden Ast
Standard

Ich hätte jetzt gedacht, dass der normale, welcher geladen wird, die Eingaben an das Authsystem weitergibt, z.B. per
PHP-Code:
$this->auth->login($username$password); 
Oder wie würdest du das am Besten lösen?

Danke,

Simon
Lapayo ist offline   Mit Zitat antworten
Alt 01.05.2011, 21:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Dass muss der oberste Controller aber alle Parameter der anderen kennen. Da kann man sich die Subcontroller dann tw. auch sparen oder?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 01.05.2011, 21:03  
Benutzer
 
Registriert seit: 14.07.2010
Beiträge: 55
PHP-Kenntnisse:
Fortgeschritten
Lapayo befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
das verstehe ich jetzt ehrlich gesagt nicht so ganz. O_o
Welche Parameter meinst du und wofür müsste der obere Controller diese kennen?
Lapayo ist offline   Mit Zitat antworten
Alt 01.05.2011, 21:05  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wenn ich mal davon ausgehe, dass $this der FC und auth das Auth-Modul oder dessen Controller ist, dann müssen $username und $password ja irgendwo her kommen.. Kommen die bspw. aus POST, so muss der FC wissen, dass er dem Auth-Modul diese Parameter übergeben muss. Was aber heißt, dass er z.T. die Auth-Logik kennen muss (oder zumindest eine Schnittstelle), die ja eigentlich der zugehörige Sub-Controller abbilden würde.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eigenes CMS entwickeln P4trik Software-Design 20 05.04.2011 10:13
Eigenes CMS - Werkzeugkasten dreamcatcher Software-Design 6 11.03.2011 01:19
[Erledigt] CMS Design PhillKill12 Software-Design 3 20.06.2010 23:40
Scriptangebot Yunio CMS MiST3R-FL4SH Scriptbörse 17 29.05.2010 00:46
[Erledigt] verständnisfrage CMS d0ne Off-Topic Diskussionen 4 25.05.2010 06:44
CMS bzw Board einbauen? gombi Scriptbörse 12 28.04.2010 15:44
Login Script / CMS bikone PHP Tipps 2009 14 31.10.2009 23:33
Scriptsuche [Erledigt] Suche CMS für Clan / Community dontworry Scriptbörse 11 26.10.2009 20:07
Eigenes CMS Moep PHP Tipps 2009 12 06.08.2009 23:00
Open Source CMS: wer macht mit? chris14465 Beitragsarchiv 6 24.06.2009 17:02
Dreamproject [S] CMS evtl. Feststellangebot vnBiT.sys Beitragsarchiv 4 25.04.2009 10:51
[S] erfahrene Coder für eigenes CMS DarkSky25 Beitragsarchiv 14 31.03.2009 12:06
CMS mit Framework KeKs0r PHP-Fortgeschrittene 11 27.12.2008 23:03
Design Pattern Harry B. Software-Design 7 02.09.2008 20:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cms mvc, php tutorial cms mvc, cms php tutorial mvc, design patterns cms, cms design php.de, login rechtesystem cms php sample, webseite mit mvc aufbauen, mvc php example, cms mvc aufbau, php tutorial cms, mvc cms, mvc pattern php login, cms aufbau php 2011, cms aufbau, cms php tutorial, cms mit mvc php, welches pattern für cms, php mvc controller, php design vorschlag, passwort login php pattern

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum