zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP, OOP und Array Übergabe

Antwort
 
LinkBack Themen-Optionen Ansicht
  #31 (permalink)  
Alt 21.12.2010, 23:07
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Zitat:
Zitat von mantiz Beitrag anzeigen
Am Framework an sich habe ich die letzten 2 Monate gearbeitet, allerdings nicht am Stück. Vorher hatte ich bereits einen Versuch mit nahezu identischen Klassen wie aus dem Buch "PHP Design Patterns" unternommen, habe dann aber festgestellt, dass man Patterns nicht "einfach so" umsetzen sollte.
Das ist ja fast ne halbe Ewigkeit Mal schauen wie ich Zeit finde so etwas umzusetzen
Zitat:
Zitat von mantiz Beitrag anzeigen
Das stimmt auf jeden Fall, Performance geht verloren, aber das ist klar, anders geht's halt nicht.
Für mich besteht der Vorteil darin, dass ich mich nicht um so Dinge wie das quoten der Spalten oder escapen der Werte kümmern muss, weil das von DbQuery automatisch vorgenommen wird, das hilft schonmal bei der Übersichtlichkeit.
Zusätzlich bleibt man zu einem gewissen Grad portabel.
Mir geht es dabei darum eine Klasse/ein Framework zu haben, was ich mit möglichst wenig Änderungen in vielen Projekten schnell einsetzen kann. Damit diese dann schneller vom Stapel laufen. Entwicklungen von anderen mag ich auch nicht so extrem.... Ich habe da immer dieses Gefühl "Hoffentlich geht nichts kaputt, was du noch nicht gefunden hast!"

Wie realisierst du das Lazy-Loading? Mit der Methode __autoload() von php, oder hast du dir da auch etwas eigenes geschrieben?
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
Sponsored Links
  #32 (permalink)  
Alt 22.12.2010, 03:28
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen
Wie realisierst du das Lazy-Loading? Mit der Methode __autoload() von php, oder hast du dir da auch etwas eigenes geschrieben?
Ja, per __autoload werden die Dateien automatisch eingebunden und fast jedes Objekt wird erst in den get-Methoden, also bei Bedarf, erstellt.

Ein einfaches Beispiel (ohne zusätzliche Config) könnte sein:
PHP-Code:
public function getRouter() {
   if (!
is_object($this->router) && $this->router !== null) {
      
$routerClass = (string)$this->router;
      
$this->router = new $routerClass();
      return 
$this->router;
   }
   return 
null;

Im Setter kann entweder ein Objekt oder ein String (Klassenname) übergeben werden.
So sind sämtliche Klassen schonmal änderbar, ohne dass man die Objekte im Vorfeld erstellen muss, nur bei zusätzlicher Config.
Mit Zitat antworten
Sponsored Links
  #33 (permalink)  
Alt 22.12.2010, 11:27
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Was genau macht denn deine Routerklasse?
__________________
github | http://dnaber.de
Mit Zitat antworten
  #34 (permalink)  
Alt 22.12.2010, 12:24
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Der Router ermittelt den Controller und die Action, welche aufgerufen werden soll anhand eines Strings.
Ich verwende dazu im Frontcontroller die RequestUri, aber man könnte auch einen GET-Parameter verwenden oder sonstwas.

Routen können dann z.B. so aussehen:
Code:
<auth>
	<route>/:action/*</route>
	<defaults>
		<controller>auth</controller>
		<action>login</action>
	</defaults>
	<regex>
		<action>login|logout</action>
	</regex>
</auth>
Im Grunde ist das ähnlich dem Regex-Router von Zend. Und CakePHP macht es, wenn ich mich recht erinnere, auch so ähnlich.
Die Route wird in einen regulären Ausdruck übersetzt und geprüft, ob dieser Ausdruck auf den String passt, dann werden anhand dessen die Variablen (hier nur action) und Übergabe-Parameter (alles was auf * passt) bestimmt und ggfs. die Defaults gesetzt.
Anschließend werden noch die Variablen gegen die Ausdrücke in "regex" geprüft, wenn alles stimmt, wird die Route verwendet.
Hier wird die Action auf "login" und "logout" beschränkt, die Route passt also nur für Anfragen der Form "/login", "/login/*", "/logout", "/logout/*".
Der angegebene Controller-Name ist ein eindeutiger Schlüssel für den Controller.

Die Config vom Controller sieht dann so aus:
Code:
<controllers>
	<auth>
		<class>Auth_Controller</class>
		<loginRedirectUrl>/admin</loginRedirectUrl>
	</auth>
</controllers>
Der Auth-Controller stellt bei mir das Login-Formular dar und führt bei einem Post-Request einen Login durch.
Man kann aber auch einen anderen Auth-Controller schreiben und diesen so ziemlich simpel in der Config ändern.

Die ganze Config scheint aufwendig zu sein, aber bei manchen Frameworks ist das so, dass diese einfach ein festes URI-Schema verwenden, was dann so ähnlich aussieht wie: /<controller>/<action>/<params>.
Wobei der default von <controller> und <action> meistens auf "index" gesetzt wird und die Parameter natürlich optional sind.
Das bedeutet aber, dass die URIs quasi fest vorgegeben sind, die Controller müssen also entsprechend den gewünschten URIs benannt werden.
Und genau dafür ist der Router da.
Mit Zitat antworten
  #35 (permalink)  
Alt 22.12.2010, 12:55
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Also zusammengefasst parst der Router die Permalinks und entscheidet, wie es weiter geht?!
__________________
github | http://dnaber.de
Mit Zitat antworten
  #36 (permalink)  
Alt 22.12.2010, 13:38
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

So ungefähr, ja.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe geschieht nur einmal Benutzername Serveradministration und serverseitige Scripte 0 12.05.2011 16:59
wo ist OOP für php sinnvoll? sqrack Serveradministration und serverseitige Scripte 5 12.09.2010 17:23
PHP OOP: Datenbankeintrag Klasse - ein paar theoretische Überlegungen braindead Serveradministration und serverseitige Scripte 17 24.07.2009 07:29
PHP: zweidim. Array mit eindimensionaler Struktur in Eindim. Array umwandeln? braindead Serveradministration und serverseitige Scripte 4 08.07.2008 14:31
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:46 Uhr.