"We are back" « oc.at

PHP 5.4 released

Nico 03.07.2011 - 08:39 5907 26
Posts

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Du weisst schon was man unter Bubbling versteht? Bzw. dass es gewöhnlich sehr DOM-Spezifisch ist? Ich glaub nämlich grad nicht dass wir die gleiche Sprache sprechen.

Außerdem is mir unklar an welchem Member es dir aufstößt

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Nein, aber du kennst das Wort sichtlich nur von dort. Bubbling gibt es auch in .NET und ebenso verwende ich es in meinem Framework, um Events durch mehrere Klassen eines Objekts bzw. deren Kinder durchzureichen, falls nötig.

Ich verstehe auch eigentlich gar nicht, warum wir diskutieren. Ah, jetzt weiß ich es wieder ... weil du gemeint hast, dass du meine Probleme bezüglich Magic-Funktionsaufrufen und Referenzen lösen kannst. Das ist nur schwer möglich mit den Informationen, die du hast und allem vorangestellt gar nicht nötig.

Paxi

Overclocking Team Member
Avatar
Registered: Oct 2009
Location: Wien
Posts: 389
Ich versteh bisher nur irgendwie nicht ganz worum es sich lohnt in Php mit soviel Patterns usw zu arbeiten wenn man sich eigentlich nicht wirklich um Speicherverwaltung kümmern muss und es auch keine Typsicherung etc gibt wozu es sich nichtmal lohnen würde Interfaces für irgendwelche Erweiterungen zu programmieren..
Sowas wie Bubbling ist mir auch bekannt aber lohnt es sich wirklich in der Praxis sowas bei einem Php Projekt zu verwenden?

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Eine Art Event-System bzw. Signaling ist in vielen Projekten praktisch, und schafft Übersicht. vor Allem wenn es erweiterbar sein soll. Dabei brauchst du aber sehr wahrscheinlich kein Bubbling bzw. kannst dieses im Listener erledigen.

Design Patterns helfen dir Code schnell, sauber und verständlich zu schreiben. Mit Speicherverwaltung hat das eigentlich nichts zu tun.

Seit PHP5 gibt es type-hinting. Was einer statischen Typensicherung in Java gleich- oder zumindest nahe kommt.

Paxi

Overclocking Team Member
Avatar
Registered: Oct 2009
Location: Wien
Posts: 389
Das stimmt natürlich, da habe ich mich etwas schlecht ausgedrückt.
Ich hatte gerade jz im 4.Semester eine eigene LVA zum Thema Softwareparadigmen.
Ich arbeiten nur nebenbei schon seit knapp einem Jahr als Webprogrammierer, hauptsächlich für serverseitige Sachen und obwohl ich schon an größeren Sachen gearbeitet habe und mein Chef auch sehr viel wert auf saubere Programmierung legt, hatten wir noch nie ein Projekt bisher wo wir mehr als mal eine Vererbung gebraucht haben.
Ich denke in PHP sind Patterns erst richtig interessant, wenn man wirklich große Frameworks oder CMS System programmiert, jedoch nicht bei "normalen" Webseiten.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat von Paxi
Ich denke in PHP sind Patterns erst richtig interessant, wenn man wirklich große Frameworks oder CMS System programmiert, jedoch nicht bei "normalen" Webseiten.
Würde sagen, dass Design Patterns oftmals dort praktisch sind, wo wiederverwendbarer Code erzeugt wird.

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Wenns um sauberen Code gehen soll ist bei uns CCD sehr hoch im Kurs:

click to enlarge

Man beginne mit der Red Card (klebt bei mir seit Jahren aufm Monitor) und refklektiere jeden Tag im Bezug auf die Karte.
Simpel aber effektiv.

// Das Buch dazu ist übrigens sehr empfehlenswert für jeden ernsthaften Softwareentwickler..
Bearbeitet von Obermotz am 07.07.2011, 13:49

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
@mat:
Der ganze Post von dir (und ein paar der Posts davor) ist ziemlich unhöflich...
Zitat von mat
weil du gemeint hast, dass du meine Probleme bezüglich Magic-Funktionsaufrufen und Referenzen lösen kannst.
Das habe ich weder geschrieben noch gemeint.
Zitat von mat
Nein, aber du kennst das Wort sichtlich nur von dort. Bubbling gibt es auch in .NET und ebenso verwende ich es in meinem Framework, um Events durch mehrere Klassen eines Objekts bzw. deren Kinder durchzureichen, falls nötig.
Ich schreib jetzt hier einfach was ich unter bubbling Events verstehe (btw. die .net Doku sagt mMn. das Gleiche):
Voraussetzung ist eine hierarchische Objektstruktur. Wird ein bubbling Event dort in einem Element ausgelöst, so wird (danach) das gleiche Event am Parent ausgelöst. So wird die gesamte Hierarchie "nach oben" bis zum Root durchlaufen falls das Bubbling nicht abgebrochen wird.
Die Analogie dabei sind in Flüssigkeit aufsteigende Bläschen.


Also. Was mich eigentlich interessiert. Um welchen Member geht es dir und warum macht der Probleme beim Bubbling bzw. falls wir nicht vom gleichen Bubbling reden halt bei deiner Methode der Event-Propagation?
Ich hab hier grad ein Projekt in Planung und das sollte eigentlich dann ungefähr so funktionieren wie in meinem Code...

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat von watchout
@mat:
Der ganze Post von dir (und ein paar der Posts davor) ist ziemlich unhöflich...
Das habe ich weder geschrieben noch gemeint.
Ich hab ehrlich gesagt versucht sachlich zu bleiben und mir deshalb den gesamten Thread noch einmal durchgelesen und hatte wohl den Eindruck, dass du HIER Senf draufgeben willst, wo keiner nötig ist. Zum Beispiel in diesem Post:
Zitat von watchout
Wenn du Objekte übergibst sind das sowieso Referenzen seit PHP5. Also ich denk das is weniger problematisch für dein Event-System, mat
Find ich ja super, dass du dir Gedanken machst, aber ich habe ja viel zu wenig Informationen preisgegeben, um eine seriöse Antwort verlangen zu können. Ich wollte eigentlich nur meine Erfahrungen nach der Integration des neusten PHP-Updates hier teilen.

Zitat
Ich schreib jetzt hier einfach was ich unter bubbling Events verstehe (btw. die .net Doku sagt mMn. das Gleiche):
Voraussetzung ist eine hierarchische Objektstruktur. Wird ein bubbling Event dort in einem Element ausgelöst, so wird (danach) das gleiche Event am Parent ausgelöst. So wird die gesamte Hierarchie "nach oben" bis zum Root durchlaufen falls das Bubbling nicht abgebrochen wird.
Die Analogie dabei sind in Flüssigkeit aufsteigende Bläschen.

Also. Was mich eigentlich interessiert. Um welchen Member geht es dir und warum macht der Probleme beim Bubbling bzw. falls wir nicht vom gleichen Bubbling reden halt bei deiner Methode der Event-Propagation?
Ich hab hier grad ein Projekt in Planung und das sollte eigentlich dann ungefähr so funktionieren wie in meinem Code...
Prinzipiell kommt es darauf an, wie den Code strukturiert werden soll. Ich brauche bei meinen Projekten eine strikte Trennung zwischen dem Basiscode des Frameworks und den Projekt-spezifischen Klassen. Damit wollte ich verhindern, dass Programmierer, die zukünftig mit einer Erweiterung des Projekts beauftragt werden, Einblick in den Framework-Code benötigen. Sie sollten nur den Ablauf, sowie eine Funktionsreferenz erhalten, um ihre eigenen Klassen auf Basis der zur Verfügung gestellten Framework-Klassen zu entwickeln. Die Einstiegspunkte für die Erweiterungen sind ausschließlich als überschriebene Funktionen in der neuen Klasse angelegte Events. zB:

Code: PHP
class MyNewApplication extends Application
{
    /**
    * Invoked on every request to intialise the application.
    *
    * @return boolean application successfully initialised?
    */
    protected function onInit()
    {
         // Initialise additional database connections
         // ...

         return true;
    }
}

Das ist alles was gebraucht wird, um alle Initialisierungen für eine eigene Applikation zu machen. Praktisch, weil der Code wie gesagt komplett unabhängig vom restlichen Framework ist. Die Basisklassen bekommen ebenfalls das Event inkl. deren Kinder und Kindeskinder usw., wie es das Objekt selbst eben vorab deklariert hat - verkehrtes Bubbling halt.

Das ist natürlich noch ein einfaches Beispiel. Interessanter und für deine Frage auch relevant wird es, wenn das Event diverse Parameter mitbringt. Damit ein Objekt zum Beispiel auf diverse GET- und POST-Parameter eingehen kann, muss nur folgender Aufruf stattfinden:

Code: PHP
/**
* Handles request parameters for this object
*
* @param array reference to request parameters
*
* @return boolean request parameters successfully handled?
*/
protected function onHandleRequest(&$aRequest)
{
    if (array_key_exists('nForwardToID',$aRequest))
        $this->forwardToID($aRequest['nForwardToID']);

    return true;
}

Die Member-Funktion fowardToID() hat sich der Programmierer auch selber geschrieben und weiß bestens bescheid, wie diese handzuhaben ist. Die restlichen, für diesen Teil des Ablaufs relevanten Informationen werden als Parameter übergeben.

Natürlich könnte man diesen Teil auch ohne Funktions-Parameter mithilfe von Member-Variablen oder extern zugänglichen Funktionen implementieren. Das würde allerdings weit mehr Dokumentationsaufwand erfordern, weil der Programmierer ja stets wissen muss, welche Member-Variablen und -Funktionen ihm aus den abgeleiteten Basisklassen zur Verfügung stehen.

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
weit ist es nicht mehr, wie man an der anzahl der fixes erkennen kann.


RC4 für Win

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
nun final. hat doch etwas gedauert :)
http://php.net/releases/5_4_0.php
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz