![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Neuer Benutzer
Registriert seit: 18.08.2005
Ort: Hürth
Beiträge: 28
|
Hallo,
ich stecke momentan etwas im Planungsfimmel und bin auf der Suche nach Ideen wir man eine Webseite optimal konstruiert. Ich hätte mal gerne von euch gewusst wie eure Seiten so arbeiten sprich: Wie und wodurch werden Inhalte dargestellt? Was für Systeme setzt ihr ein (z.B. Smarty) Benutzt ihr Frameworks? Wie sieht euer OOP Design aus?* Woher kommen eure Inhalte (Datenbank, Formatierte Dateien e.g. XML Formate) und wie weit sind sie dynamisch gehalten? Verschiedene Sprachen? Wie wird das bei euch gehändelt? Gruß DWSW
__________________
Teamarbeit ist, wenn vier Leute für eine Arbeit bezahlt werden, die drei besser machen könnten, wenn sie nur zu zweit gewesen wären und einer davon krank zu Bett läge. |
|
|
|
|
|
Nach oben #2 | ||||
|
Corvin Gröning
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
|
Hi.
Zitat:
Zitat:
Zitat:
PHP-Code:
Zitat:
__________________
|
||||
|
|
|
|
|
Nach oben #3 | |
|
Erfahrener Benutzer
Registriert seit: 18.03.2005
Beiträge: 588
|
Zitat:
Bevor man hier mit Frameworks, OOP Design und/oder Datenbanken umsich schlägt, erstmal überlegen was man will. Ein wichtiger Punkt, der sehr oft übersehen wird. |
|
|
|
|
|
|
Nach oben #4 | ||
|
Neuer Benutzer
Registriert seit: 18.08.2005
Ort: Hürth
Beiträge: 28
|
Zitat:
Ich weiss das man immer den Einzelfall betrachten muss. Aber ich wollte einfach nur mal ein paar Baupläne von Webseiten mir angucken. Für eventuelle neue Ideen etc.
__________________
Teamarbeit ist, wenn vier Leute für eine Arbeit bezahlt werden, die drei besser machen könnten, wenn sie nur zu zweit gewesen wären und einer davon krank zu Bett läge. |
||
|
|
|
|
|
Nach oben #5 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Wenn der Corvin schon so fröhlich seine Index-Seiten postet...
Die Index-Seite meines neuen CMS sieht aktuell so aus: PHP-Code:
1. Ich verwende Smarty als Template-Engine 2. Ich verwende Creole als Datenbank-Klasse 3. Ich verwende ein eigenes "Framework" Meine bisherige Idee ist relativ simpel: Webseiten bestehen aus diversen Elementen, die im Normalfall nichts miteinander zu tun haben. Es gibt ein Menü, es gibt einen Inhaltsbereich, vielleicht ein Login-Fenster, etc., jede dieser Komponenten ist ein eigenständiges Objekt. Geladen werden die Komponenten bei mir in einem Template. In der init-Methode verarbeitet die Komponente dann eventuelle Parameter und lädt das Model (z.B. aus einer XML-Datei oder aus der Datenbank). In der render-Methode wird dann das View geladen (Smarty-Template) und als String zurückgegeben. So setzt sich die Seite aus ihren einzelnen Komponenten zusammen. Wie ich Mehrsprachigkeit realisieren werde, weiß ich noch nicht. Mein aktueller Entwurf liest ein "ResourceBundle" und speist alle darin enthaltenen Informationen in's Template. Das macht die Basis-Klasse "Component" voll automatisch. Das ResourceBundle (z.B. "Bundle_de.properties") liegt dabei im gleichen Verzeichnis, in dem auch die Komponente definiert ist. Ob das so bleibt weiß ich allerdings nicht. Wobei ich vielleicht hinzufügen sollte, dass dieses CMS selbst nur ein Framework seien wird (wie die erste Version auch). |
|
|
|
|
|
Nach oben #6 |
|
Erfahrener Benutzer
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 502
|
Ich hab da mal ne frage bezüglich klassen-einbindung:
corvin bindet seine klassen direkt mittels include ein (besser wäre aber "require_once", oder?) und pago verwendet nen classloader mit packages. ich hab mir auch mal überlegungen dazu gemacht, wie man seine klassen am besten organisiert und dabei ist folgendes rausgekommen: alle klassen liegen liegen in einem verzeichnis bzw dessen unterordnern. diese werden dann alle eingelesen und in ein array gespeichert (als "ClassName" => "package/subpackage/ClassName.class.php"), das natürlich gecached wird. mittels der __autoload() funktion werden dann bei bedarf die benötigten dateien eingebunden. Das erspart einem natürlich die ganze arbeit, jede klasse bzw jedes package einzeln einzubinden, aber vor allem bei größeren klassenbibliotheken dauert das ganze halt länger als andere methoden.
__________________
Weißt Bescheid - Scheiß wie weit |
|
|
|
|
|
Nach oben #7 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Mein "System" ist nicht wirklich gut... ich muss mir da noch'n bisschen was überlegen, wie ich das sinnvoller machen kann.
Momentan schaue ich in allen Verzeichnissen, die ge"import"ed wurden, ob dort eine Datei existiert, die zum Muster "$classname.class.php" passt. "importExternal" macht prinzipiell das gleiche, nur ohne ".class", weil creole das nicht im Dateinamen hat (smarty, z.B., aber schon). Davon abgesehen sieht meine Verzeichnis-Struktur ziemlich genauso aus, wie deine. |
|
|
|
|
|
Nach oben #8 |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
PHP-Code:
|
|
|
|
|
|
Nach oben #9 | |
|
Erfahrener Benutzer
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
|
Zitat:
weggegangen, da das mehr aufwand als nutzen ist. mein ansatz sieht in etwa so aus. Es gibt wie auch bei pago einen ClassLoader (Java lässt grüßen). dieser hat methoden wie requireClass und requireScript, sowie auch die methode newInstance. möglichst alle klassen sollten durch die methode newInstance erstellt werden, der ClassLoader überprüft dann ob die angeforderte klasse schon eingebunden wurde, wenn nicht wird sie über die methode requireClass eingebunden. die klassen werden nicht über ihren eigentlichen pfad, sondern über einen Klassenpfad angesprochen. eine core klasse z.B. src/classes/util/Test.class.php wird über den Klassenpfad CORE.util.Test angesprochen. Der Pfad wird dann vom ClassLoader in der methode classpathToFile aufgelößt. Includes werden im Ordner src/includes/dateiname.inc.php aufbewahrt und können über den Klassenpfad INC.dateiname angesprochen werden. hier ist es eigentlich nicht korrekt von einem Klassenpfad zu sprechen aber das habe aus gründen der einfachheit vernachlässigt. OptionaleKlassen die nicht zum Core gehören werden in Packages aufbwahrt, welche durch ein unterverzeichnis im ordner packages aufbewahrt werden. Der Klassenpfad PAK.test.Class1 verweißt dann also auf packages/test/Class1.class.php Des weiteren kann man in einer Konfigurationsdatei für jeden Klassenpfad statische Konfigurations attribute definieren, welche dann in der newInstance methode auf die instanzierte klasse übertragen werden. Code:
class TestClass extends Base{
protected $attrib1;
protected $attrib2;
function __construct($conf){
parent::__construct($conf);
}
}
nehmen wir mal an die datei befindet sich in dem package test. um der klasse eine statische konfiguration hinzuzufügen würde man also in der konfig datei folgendes hinzufügen Code:
PAK.test.Class {
attrib1 = test
attrib2 = nocheintest
}
Code:
$t = ClassLoader::newInstance('PAK.test.TestClass');
Code:
$conf = array(
'attrib1'=>'überschriebener test'
);
$t = ClassLoader::newInstance('PAK.test.TestClass',$conf);
so ist es in meinem framework auch möglich klassen zu überschreiben. Code:
OVERRIDES {
PAK.test.TestClass = PAK.test1.TestClassHack
}
Im moment bin ich dabei noch einen leichtgewichtigen aspektorientierten ansatz zu erarbeiten, mit dem es letzendlich möglich sein wird aspekte einer klasse hinzuzufügen ohne den php code zu ändern. |
|
|
|
|
|
|
Nach oben #10 | ||
|
Erfahrener Benutzer
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 502
|
@beny_mcde
das hört sich ganz praktisch an. aber was für einen vorteil haben die konfigurationsdateien? oder ist das halt einfach ne framework erweiterung, die man aber an sich nicht umbedingt braucht? Zitat:
Zitat:
__________________
Weißt Bescheid - Scheiß wie weit |
||
|
|
|
|
|
Nach oben #11 | ||||
|
Erfahrener Benutzer
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
|
Zitat:
PHP-Code:
wie man unschwer erkennen kann ist diese schreibweise sehr schwer zu lesen und es schleichen sich schnell fehler in form von vergessenen klammern/anführungszeichen und kommas ein. das hat zur folge das das gesamte script mit einem parser error abgebrochen wird, nur wegen der konfiguration. beim umwandeln der konfig datei werden fehlerhafte einträge einfach nicht beachtet bzw korrigiert. da ich in manchen projekten auch die seitendefinition in der konfiguration erledige, hatte ich in naher zukunft geplant eine graphische administration für die konfigurationsdateien zu bauen. das format lässt sich wesentlich besser parsen und wieder schreiben als eine phpdatei mit verschachtelten arrays. Code:
SECTIONS{
home {
mainTemplate = template.html
contentTemplate = home/content.html
}
home.news {
mainTemplate = template.html
contentClass = PAK.news.content.NewsContent
}
}
"/home/index.html", "/home/news/index.html" abgerufen werden, Zitat:
|
||||
|
|
|
|
|
Nach oben #12 |
|
Irgendwas mit e
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 393
|
Meine bisher erste PHP5-Index-Datei sieht so aus.
PHP-Code:
Den File-Loader hab ich mir von Guradia abgeguckt. Fand ich ganz sinnvoll und lustig. Meine Struktur sieht so aus: im Unterordner src/ sind alle Classfiles abgelegt. Dabei arbeite ich pluginbasiert, was ich später noch automatisieren will. auf jeden Fall gibt es im Grunde 2 Arten von Ordnern in src/: Plugin-Ordner, in denen Klassen zu einem Plugin, wie einer Shoutbox, einem News-System, etc. abgelegt sind, sowie einem "core"-Ordner, in dem Hauptklassen der Seite sowie nützliche Utitlies, wie einer Entpacker-Klasse, einer Form-Klasse (die zugegeben nur eins is: überladen), einer Template-Klasse, die auch PHP-Code innerhalb eines Templates parsen lässt, oder einer MySQL-Klasse, die sich beim deserialisieren wieder neu verbindet. Die Plugins sind nach einer gewissen Logik aufgebaut. Wenn man also den Code eines Newssystem haben möchte, erstellt man z.B. eine Instanz von NewsSys_NewsSys(); und lässt sich den Code per get_Code() zurückgeben. In der config-Datei werden globale Config-Daten bereitgestellt, mit denen auch die PHP-Codes innerhalb der Templates arbeiten können. Bislang ist das recht.......ähh..........ineffizient. Naja, vielleicht konnte ich den ein oder anderen inspirieren, oder kann selbst noch was lernen, was super wäre, denn wirklich zufrieden bin ich mit dem Ganzen nicht wirklich.
__________________
In the beginning was the word and the word was content-type: plain/text heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int |
|
|
|
|
|
Nach oben #13 |
|
...möp...
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 78
|
Hi,
also mein grundaufbau ist zur zeit dass ich eine global.php habe, wo ich dann die klassen aufrufe und objekte erstelle usw. und wichtige variablen festlege. (MysqlDaten sind dann aber in der config.php) Und dann habe ich die index.php, in der ich die global.php einbinden und dann die verschiedenen seiten einbinde (mache das mit index.php?page=...). Als template-system verwende ich smarty und als mysql-klasse meine eigene. Habe dann noch paar Fragen: Was ist ein Framework und warum benutzt ihr das? Was ist der Vorteil davon? Oder ist ein Framework einfach nur ein bisschen wie meine global.php. Also wo dann template-klasse und mysql-klasse und alles zusammen ist und dass man dann nur noch die ausgabe machen muss und der rest ist das gleiche? |
|
|
|
|
|
Nach oben #14 |
|
Benutzer
Registriert seit: 27.02.2006
Beiträge: 38
|
Bei Wikipedia gibt es eine gute und ausführliche Definition zu "frameworks":
http://de.wikipedia.org/wiki/Framework |
|
|
|
|
|
Nach oben #15 | |
|
me pro ok?
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
|
Zitat von WarrenFaith aus einem internen Forum.
Zitat:
|
|
|
|
|