Page 1 of 1
Selbstgeschriebene applikationsweite Funktionen
#1
Posted 24 August 2009 - 04:16 PM
Hi,
wo schreibt ihr selbstgeschriebene Funktionen die Applikationsweit aufgerufen werden können?
wo schreibt ihr selbstgeschriebene Funktionen die Applikationsweit aufgerufen werden können?
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
#2
Posted 25 August 2009 - 02:13 AM
Spezialisiere CWebApplication und bau deine Methoden da rein. Wenn sie nicht direkt auf die Application zugreifen kannst du sie static machen.
In den einzelnen Controllern kannst du dann mit Yii::app()->{deine Methode} darauf zugreifen.
Damit deine Application verwendet wird, musst du die index.php entsprechend anpassen.
In den einzelnen Controllern kannst du dann mit Yii::app()->{deine Methode} darauf zugreifen.
Damit deine Application verwendet wird, musst du die index.php entsprechend anpassen.
#3
Posted 25 August 2009 - 02:19 AM
Einfache einzelne Funktionen die man immer wieder mal verwendet hab ich in eine global_func.php in /protected/ gelegt und einfach in der index.php mit
require_once('protected/global_func.php'); vor require_once($yii);eingebunden.
#4
Posted 25 August 2009 - 03:04 AM
Ich halte es für keine gute Idee, in deinen Klassen allgemeine Methoden zu verwenden, die irgendwo in der Applikation mit 'require' oder 'include' eingebunden werden. Klar kann man das machen, aber die Lokalität geht verlorgen und man sucht sich dumm und dämlich. Dann würde ich es vorziehen, diese Funktionen an einer Stelle zusammen einzubinden, die diese dann für die Application bereitstellt.
#5
Posted 25 August 2009 - 03:41 AM
Die require - Idee halte ich auch nicht für gut.
Kannst du deinen Vorschlag konkretiesieren dave?
Kannst du deinen Vorschlag konkretiesieren dave?
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
#6
Posted 25 August 2009 - 03:48 AM
Ehrlichgesagt finde ich den einfachen require-Ansatz nicht so verkehrt - sogar Qiang schlägt einen solchen vor (siehe Cookbook: http://www.yiiframew...oc/cookbook/31/). Sämtliche einfachen globalen Funktionen wandern in einige wenige Files, die in der index.php required werden. Man muss es nicht komplizierter machen, als es sein muss
#7
Posted 25 August 2009 - 05:05 AM
für "spezielle dinge" kann man ja immer noch components schreiben glaub im app skeleton gabs ne time component. Also eine klasse 'time' oder sowas mit funktionen die genau dafür nur gebraucht werden, in dem fall zeit Ausgabefunktionen.
die kann man dann mit klasse::funktion() aufrufen
also wenn man wirklich mehr ordnung einbringen will.
die kann man dann mit klasse::funktion() aufrufen
also wenn man wirklich mehr ordnung einbringen will.
#9
Posted 25 August 2009 - 05:51 AM
yii, on 25 August 2009 - 03:41 AM, said:
Die require - Idee halte ich auch nicht für gut.
Kannst du deinen Vorschlag konkretiesieren dave?
Kannst du deinen Vorschlag konkretiesieren dave?
In solchen Fällen baue ich mir einen Wrapper der Zugriff auf die gewünschten Funktionen liefert. Der Wrapper ist z.b. als komponente in yii eingebunden. Alle Klassen im Zusammenhang mit YII greifen über den Wrapper auf die globalen Funktionen zu. Der Wrapper included die natürlich mit require.
Dadurch behält man die Kontrolle an welcher Stelle "externe" Funktionen eingebunden werden und man kann sie für die gesamte Application kontrollieren, z.b aktivieren oder deaktivieren.
Die Lokalität erkennt man dann auch aus dem Code heraus. Wenn ich mir nach z.B einem halben Jahr nochmal ein Projekt anschauen muss, werde ich mich mit Sicherheit fragen, wo ist die Funktion denn definiert und an welcher Stelle wird diese eingebunden?
#10
Posted 25 August 2009 - 09:24 AM
Ich habe nun den Weg gewählt, dass ich im Components-Ordner eine Klasse erstellt habe, die von nichts abgeleitet habe und nun sie aufrufe über
Klassenname::Methodenname
Klassenname::Methodenname
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
Share this topic:
Page 1 of 1

Help














