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 21.10.2009, 16:05  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
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 URL-Design für PAC-Ansatz

Nachdem ich vor einigen Threads wieder auf das PAC-Thema gekommen bin, habe ich begonnen, ein Framework, mit dem man an dieses Pattern angelehnte Anwendungen erstellen kann.

Im Grunde ist auch kein Problem. Es gibt sog. Agenten, die jeweils eine Art MVC-Applikation darstellen. Jeder Agent kann wiederum weitere Agenten einbinden.

Man kann sich das so vorstellen:
Es gibt einen "Root"-Agenten, der den Rahmen für die angeforderte Seite darstellt. Dieser kann Agenten einbinden, z. B. ein Login-Formular, eine Liste von Einträgen o. ä.. Diese Liste wiederum kann weitere Agenten einbinden, z. B. ein Formular zum Erstellen neuer Einträge usw. usw..

Diese Agenten sind in einer Verzeichnisstruktur abgebildet.

Jetzt grüble ich bereits einige Tage über ein passendes URL-Design, da man ja einerseits Agentenketten abbilden können soll.

Bis jetzt bin ich zu diesem Schluss gekommen (Es geht nur um das Ansprechen der Agenten, nicht um irgendwelche Parameter, die diese außerdem benötigen:

umgeschriebene URLs:

Direktes ansprechen eines Agenten:
http://localhost/de/Agent/

Kette von Agenten (Agent1 ruft Agent2 auf), Agent2 ruft Agent3 auf:
http://localhost/de/Agent1,Agent2,Agent3/

Mehrere Agenten(-ketten):
http://localhost/de/Agent1,Agent2;Agent4,Agent5;Agent6/

Das ist natürlich sehr kompliziert und die Agentenketten sind auf den Obersten Agenten beschränkt. Fällt einem dazu etwas besseres ein?

Oder nur eine Agentenkette ermöglichen, dann müssen die Agenten halt differenziert genug sein, um die Applikation abbilden zu können..

Geändert von xm22 (21.10.2009 um 16:10 Uhr).
xm22 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.10.2009, 18:34  
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 xm22,

ich kann dir hierzu nur den Thread Erweiteres MVC-Controlling (erweitertes Controlling (MVC)) and Herz legen. Ob du nun PAC oder HMVC betrachtest ist nicht allzuviel Unterschied. Insbesondere zum Thema URL-Layout findest du auch einige Anmerkungen.
__________________
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 21.10.2009, 18:58  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
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

Das habe ich mir auch bereits angesehen. Das Grundprinzip ist ja, dass man ein Dokument "aufruft", das sowohl Unterelemente als auch Oberelemente (Layout) haben kann.

Habe ich das richtig verstanden? Wenn ja, dann ist mein (gewünschter) Ansatz, dass man immer das Oberelement (Root) mit entsprechenden Parametern aufruft, was dazu führt, dass dieses die GUI zusammen baut. Aber das führt, wie Du schon beschrieben hast, zu einer immer komplexeren URL. Daher suche ich eine Möglichkeit das irgendwie anders zu machen..

EDIT: Vor allem, ohne dass Double-Content entsteht..

Ich hatte schon damit geliebäugelt, immer den aktuellen Zustand der Applikation pro Session zu speichern, aber das ist mir zu hanebüchen und 2. kommt damit zwangsweise Double-Content zustande, abgesehen davon, dass die Seite nicht mehr richtig gespidert werden kann.

Geändert von xm22 (21.10.2009 um 19:01 Uhr).
xm22 ist offline   Mit Zitat antworten
Alt 22.10.2009, 08:00  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
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

Nach langem Suchen scheint es dafür keine Lösung zu geben, weil sich dieses Konzept in meiner Form nicht auf Web-Applikationen übertragen lässt. Das wäre ja echt schade...
xm22 ist offline   Mit Zitat antworten
Alt 22.10.2009, 08:07  
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 xm22,

du hast vermutlich den verlinkten Thread nicht gründlich genug gelesen. Dort habe ich zwei Ansätze erläutert: Session und URL-Codierung mit und ohne Session. Lies nochmal nach...
__________________
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 22.10.2009, 10:08  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
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

Ah - Jetzt habe ich es verstanden - Denke ich. Allerdings widersprichst Du Dir an zwei Stellen (Oder ist das nicht als Widerspruch zu sehen?):
Stelle 1:
Zitat:
Dies funktioniert dann, wenn du die URL generisch gestaltest. Jedes Modul, jeder View, der einen Link generiert, bedient sich einer zentralen Parameter-Quelle (das kann z.B. das $_REQUEST-Array sein) und generiert allgemeingültige Links, die gleichermaßen alle relevanten Informationen für alle Module enthalten. Das klingt erst mal nach einem riesigen Haufen an Parametern, ist aber nicht so schlimm,
Stelle 2:
Zitat:
Das ist Wahnsinn. Komplexere Applikationen können einige viele Ebenen enthalten die zudem auch noch eine Baum-Struktur und eben keinen stringenten Pfad haben. Das in der Form in der URL abzubilden funktioniert schlicht nicht.
Aber gut - Das kann man halten wie ein Dachdecker..

Da es anscheinend nicht so verkehrt ist, habe ich mir das URL-Design jetzt so überlegt:

Entweder mit Schlüsseln (var...)
Code:
http://localhost/root;var1,value1|var2,value2/agent1;var1,value1/...
Oder ohne (Um Zeichen zu sparen)
Code:
http://localhost/root;value1,value2/agent1;value1/...
Dazu kommt der Router, der die URLs zusammensetzt bzw. auseinander baut.

Jetzt bin ich noch am Überlegen, ob jeder Agent beim Instanziieren dem Router sagen kann, ob er bestimmte Parameter auf jeden Fall in jede generierte URL packen soll oder nicht. Allerdings könnte das wieder dazu führen, dass eine URL Parameter enthält, die vielleicht gar nicht notwendig sind, weil beim neuen Aufruf der Agent gar nicht benutzt wird.

In der Session will ich keine Zustandsparameter speichern, um Suchmaschinen genauso wie Browser-Controls korrekt bedienen zu können.

Alles sehr kompliziert...
xm22 ist offline   Mit Zitat antworten
Alt 22.10.2009, 11:38  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Wenn dir Suchmaschinen wichtig sind solltest du dir auch was überlegen wie du beim erstellen der url die parameter "sortierst" dass durch verschiedene pfade zum gleichen ziel nicht verschiedene urls zusammenkommen:

z.b.:
http://localhost/agent1;value1,value...value1,value2/...

vs

http://localhost/agent2;value2,value...value1,value2/...
robo47 ist offline   Mit Zitat antworten
Alt 22.10.2009, 11:48  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
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

Das hatte ich mir auch schon überlegt und bin bis dato zu dem Ansatz gekommen, die Parameter alphabetisch anzuordnen.
xm22 ist offline   Mit Zitat antworten
Alt 22.10.2009, 12:12  
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

Hi xm22,

Zitat:
Ah - Jetzt habe ich es verstanden - Denke ich. Allerdings widersprichst Du Dir an zwei Stellen (Oder ist das nicht als Widerspruch zu sehen?):
Nein, ich sehe an deinen Aussagen, dass du das noch nicht verstanden hast. -> Nochmal in aller Ausführlichkeit lesen und versuchen nachzuvollziehen.

Der von dir beschrieben Ansatz ist weiter nicht besser als der, denn ich mit dem Nomen "Wahnsinn" beschrieben habe, denn du schaffst es damit nicht die Komplexität des HMVC-DOM-Baums verstecken kannst!

Lies dir bitte das verlinkte Thema nochmal durch und schau dir parallel mal das APF an. Das unterstützt dich out-of-the-box mit einer generischen Page-Controller-Architektur, in die du eine Software nur noch betten musst.
__________________
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 22.10.2009, 12:29  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
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 versuche mal, es so wiederzugeben, wie ich es aufgefasst habe (Für das APF). Wenn das falsch ist, würde ich mich freuen, wenn Du das richtig stellen kannst:

Man hat den Page-Controller, der durch (ineinander verschachtelte Taglibs) einen DOM-Baum aufbauen kann, wobei die Taglibs das ungefähre Gegenstück zu meinen Agenten darstellen. Jede Taglib, bzw. das, was dahinter steht, wird durch die URL bzw. Zustandsdaten in der Session gesteuert, wodurch es möglich ist, durch die URLs keine Rückschlüsse auf den Zustand der Applikation ziehen zu können und die Informationen in den URLs minimal halten zu können.


EDIT: Um Missverständnisse zu vermeiden: Natürlich werden in der URL nur Parameter für Agenten übergeben, die diese auch benötigen, d. h. ein Login-Formular benötigt keine Parameter, also taucht dieser Agent in der URL auch nicht auf. Anders z. B. eine Liste mit irgendwas, wo z. B. die Sortier-Parameter gegeben sein müssen. Genauso das Einbinden von Agenten in Agenten. Wenn ein Agent von sich aus ableiten kann, was er einbinden kann/muss, dann muss das natürlich nicht über die URL gesteuert werden.

Geändert von xm22 (22.10.2009 um 13:19 Uhr).
xm22 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
Social Engine Design umsetzen, Smarty, PHP etwas Ajax SunBella Beitragsarchiv 0 08.10.2009 14:45
Design Pattern Harry B. Software-Design 7 02.09.2008 20:49
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Scrollleiste im design berücksichtigen Crypi HTML, Usability und Barrierefreiheit 5 16.01.2006 08:10
Design Beitragsarchiv 26 04.06.2005 20:56
Problem mit *.TPL dateien und Design imported_DJ Nuno HTML, Usability und Barrierefreiheit 4 08.03.2005 02:29
[PHP] Design Schutz für ein Gästebuch I-Spy PHP Tipps 2005 5 01.01.2005 11:25
Mit Sessionen das Design wählen lassen. PHP Tipps 2004-2 8 28.12.2004 08:30
[Erledigt] Design Firefox vs IE bitte um Hilfe HTML, Usability und Barrierefreiheit 4 23.09.2004 05:15
[Erledigt] DIV Design HTML, Usability und Barrierefreiheit 2 24.07.2004 09:36
Design an PHPnuke oder TriggerTG anpassen?? PHP Tipps 2004 5 11.06.2004 15:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php pac, pac php, php pac pattern, php url design, url design php, pac url, pac pattern php, pac url list, designschutz parameter, php framework pac, php pac prinzip, pac with php, php code pac url, pac.lucid.local/pac/pac_php/pac, php pacs, pac in php, php link design, php: wie hmvc umsetzen, pac mit php, frhmvc

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:35 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