php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.03.2010, 23:19  
Benutzer
 
Registriert seit: 04.05.2008
Beiträge: 77
ghost120 befindet sich auf einem aufstrebenden Ast
Standard kleines CMS mit Framework schreiben

Hallo,

ich beginne gerade verschiedene Frameworks zu testen (unter anderem kohana und cakephp), da ich finde, dass sie die Arbeit doch sehr erleichtern und die ganze Anwedung viel strukturierter ist.

Nun wollte ich mal probieren ein kleines CMS zu schreiben, ich habe vor einiger Zeit schon mal ein CMS geschrieben, allerdings war das nicht wirklich OOP, also wollte ich es mal mit einem Framework versuchen.
Mein Problem liegt schon in der Planung .
Und zwar, wenn ich jetzt z.B. zwei verschiedene Arten von Seiten haben will, dynamische Seiten (Inhalte werden einfach aus der DB ausgelesen und ausgegeben) und module (z.B. ein Kontaktformular), wie löse ich das am besten?

Nach meiner Planung, würde es für das Frontend nur einen Page Controller geben, welcher die SeitenID bekommt und dann den gewünschten Inhalt aus der Datenbank holt und an den Template Controller übergibt.
Aber ist auch auch richtig so? Und was müsste ich machen, wenn nun ein Modul angefordert wird?
Ich hoffe ihr versteht was ich meine und könnt mir helfen.

Danke

lg Alex
ghost120 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.03.2010, 08:58  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich sag mal so: Vergiss es für's erste. Wenn Du schon daran scheiterst, dann schau Dir doch erstmal andere CMSe an, wie die das - auf der Anwendungsebene - lösen. Dann kannst Du schauen, wie die es intern lösen.

Wie willst Du es z. B. lösen, wenn Du eine Seite hast, die Module enthalten soll? Mach Dir zuerst Gedanken, über den logischen Aufbau (u. a. Use-Case-Diagramme). Anhand derer kannst Du dann die Applikation planen. Nicht gleich drauf los arbeiten, das bringt nichts (Weiß ich aus eigener Erfahrung mit meinem CMS..).
xm22 ist gerade online   Mit Zitat antworten
Alt 26.03.2010, 09:05  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
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 Alex,

ein CMS zu schreiben ist eine weitaus komplexere Angelegenheit, als du jetzt vermuten würdest. Aus diesem Grund würde ich deinen ersten Ansatz - zunächst einfach mal eine Seite mit dynamischen Inhalten zu schreiben - vorziehen. Alleine das kann schon Komplexitäts-Grade annehmen, bei denen die Umsetzung spannend werden kann (besonders, wenn der Auftraggeber reichlich "Ideen" hat ).

Wenn du schon Frameworks ausprobierst, möchte ich auch das APF noch in den Ring werfen. Dieses bietet dir hinsichtlich dem Templating und der Gestaltung der Oberfläche deiner Webseite deutlich mehr Freiheit als das mit CakePHP und Kohana möglich ist. Bei den beiden genannten bist du immer auf eine Ebene der GUI eingeschränkt. Möchtst du z.B. in einem Template ein weiteres einbinden (z.B. besteht deine Sidebar nicht nur aus der Suche, sondern auch aus einer Anzeige von News, etc.), so bist du mit den beiden Kandidaten schon in Bereichen angelangt, wo man nicht mehr sauber MVC programmieren kann, sondern mit ViewHelpern die Frickelei beginnt. Was du letztlich verwendest, ist natürlich dir überlassen, ich weise nur in diesem frühen Stadium darauf hin, dass die Komplexität der Oberfläche den Aufwand überproportional steigern kann, wenn die Anforderungen komplexer werden.

Nun zu den Design-Fragen:
Zitat:
Und zwar, wenn ich jetzt z.B. zwei verschiedene Arten von Seiten haben will, dynamische Seiten (Inhalte werden einfach aus der DB ausgelesen und ausgegeben) und module (z.B. ein Kontaktformular), wie löse ich das am besten?
Ich persönlich würde diese beiden Arten nicht unterschiedlich handhaben. Das vergrößert deinen Code nur zu sehr. Grund: ein Kontakt-Formular wird auf deiner Seite sicher nicht alleine bestehen, sondern der Redakteuer eines CMS möchte da sicher noch ein wenig Text drum herum schreiben oder gar Bilder einfügen. Ich würde dem Redakteuer (das bist im ersten Schritt natürlich du ) einfach die Möglichkeit geben per Marker (z.B. "{{ContactForm}}") das Formular in den Inhalts-Bereich einzubauen.
Das kannst du IMHO sehr leicht realisieren, in dem du dem Controller (oder welche Komponente dafür auch immer zuständig ist) die Intelligenz gibst, solche Tags zu interpretieren und die relevanten Module dazu einbindet.
Hierzu ist natürlich ein Mechanismus zur Verarbeitung von Modulen notwendig. Mit dem APF kannst du das sehr einfach umsetzen, in dem du den dynamischen Text aus der Datenbannk nach bekannten Tags durchsuchst und diese durch den APF Page-Controller einfach als neues Kind im DOM-Baum einhängen lässt. Alternativ dazu kannst du dir eine Taglib schreiben, die den Inhalt, der im Model der Anwendung gewünscht ist, für dich automatisch aufbereitet.

Zitat:
Nach meiner Planung, würde es für das Frontend nur einen Page Controller geben, welcher die SeitenID bekommt und dann den gewünschten Inhalt aus der Datenbank holt und an den Template Controller übergibt.
Aber ist auch auch richtig so? Und was müsste ich machen, wenn nun ein Modul angefordert wird?
Das kann man so tun, wie gesagt schränkst du dich hier auf exakt einen Controller ein. Was machst du denn z.B. wenn in der Sidebar der oben angesprochene News-Bereich auch Inhalte aus der Datenbank benötigt und dazu ein Controller verwendet werden soll?
Ich würde daher aus Design-Gründen mit einem Front- und mit einem Page-Controller arbeiten. Der Front-Controller nimmt den Request ganz am Anfang an, analysiert die URL nach den geforderten Inhalten (ID der Seite, Sprache, vielleicht noch Mapping von Keyword auf ID im SEO-URL-Fall) und schreibt diese in ein Model. Das Model dient dann dem Page-Controller dazu, die Seite auf Basis der ermittelten Informationen aufzubauen.
Im Fall eines Moduls kann das Verhalten mit dem oben aufgeführten Konzept identisch sein - es wird ja "auch nur" ein Inhalt aus der Datenbank geholt.

Solltest du weiteren Input - Prosa oder Code-Snippets - benötigen, sag Bescheid.
__________________
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 26.03.2010, 10:11  
Benutzer
 
Benutzerbild von BattleMaster246
 
Registriert seit: 23.08.2009
Beiträge: 77
PHP-Kenntnisse:
Fortgeschritten
BattleMaster246 befindet sich auf einem aufstrebenden Ast
Standard

Ich empfehle dir ein Klassendiagramm zu erstellen. Damit kann man ein CMS und auch andere Projekte sehr gut planen. Ein Volldynamisches CMS ist für den Anfang ganz gut, aber auch das ist nicht immer so einfach. Und es dauert bis ein CMS fertig ist. Ich selbst habe für mein volldynamisches CMS 3 Monate gebraucht, natürlich habe ich nicht jeden Tag dran geschrieben.

Zitat:
Und zwar, wenn ich jetzt z.B. zwei verschiedene Arten von Seiten haben will, dynamische Seiten (Inhalte werden einfach aus der DB ausgelesen und ausgegeben) und module (z.B. ein Kontaktformular), wie löse ich das am besten?
require() oder eben mit eval() aus der DB das Kontaktformular laden.
__________________



Geändert von BattleMaster246 (26.03.2010 um 10:15 Uhr).
BattleMaster246 ist offline   Mit Zitat antworten
Alt 26.03.2010, 10:29  
Benutzer
 
Registriert seit: 04.07.2009
Beiträge: 67
PHP-Kenntnisse:
Anfänger
haemoglobin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von BattleMaster246 Beitrag anzeigen
eval() aus der DB das Kontaktformular laden.
Eval wäre mir da zu gefährlich. Bisher ist mir auch noch nicht eingefallen wann man das mal nutzen sollte. Aber gut, ich bin Anfänger.
haemoglobin ist offline   Mit Zitat antworten
Alt 26.03.2010, 11:27  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
require() oder eben mit eval() aus der DB das Kontaktformular laden.
Sorry, aber die Antwort bringt ihm mal gar nichts. Was soll er damit, wenn er noch nicht mal ansatzweise ein Konzept hat?
xm22 ist gerade online   Mit Zitat antworten
Alt 26.03.2010, 23:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.248
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Was ist denn bitte ein volldynamisches CMS? 3 Monate Entwicklungszeit scheint mir recht wenig zu sein.
__________________
--
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 gerade online   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
Gesucht: PHP/Java/XHTML Programmierer zur Erweiterung von Webshop & CMS idnr13 Beruflich 0 09.02.2010 16:52
Scriptangebot Expression Forge Communication Framework [pre-alpha test] eXpression Scriptbörse 8 24.09.2009 16:27
Release 1.10 des Adventure PHP Framework (APF) veröffentlicht dr.e. Beitragsarchiv 0 04.09.2009 16:26
Eigenes CMS Moep PHP Tipps 2009 12 06.08.2009 23:00
Release 1.10-RC2 des Adventure PHP Framework (APF) veröffentlicht dr.e. Beitragsarchiv 2 21.07.2009 11:22
Release 1.10-RC1 des Adventure PHP Framework (APF) veröffentlicht dr.e. Beitragsarchiv 5 19.07.2009 21:03
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
Unterschied zwischen Framework und CMS auf Basis OOP litterauspirna Off-Topic Diskussionen 1 24.03.2009 20:10
CMS mit Framework KeKs0r PHP-Fortgeschrittene 11 27.12.2008 23:03
Zend Studio for Eclipse und Zend Framework KeKs0r PHP-Fortgeschrittene 5 15.12.2008 15:10
Release 1.8 (RC1) des Adventure PHP Framework verfügbar! dr.e. Beitragsarchiv 4 11.12.2008 09:44
BrickOO :: PHP Framework Hroudtwolf Scriptbörse 14 06.05.2008 12:04
Zend Framework Melchior PHP-Fortgeschrittene 29 13.03.2008 21:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cms schreiben, cms framework, php framework schreiben, http://www.php.de/software-design/66174-kleines-cms-mit-framework-schreiben.html, framework schreiben, php framework cms, cms planen, php cms framework, php cms schreiben, kleines php framework, php framework für cms, eigenes kleines cms, kleines framework, cms mit php schreiben, php: kleines framework, php cms planen, framework cms php, cms framework php, eigenes cms planen, volldynamisches cms

Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 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