Yii Framework Forum: Selbstgeschriebene applikationsweite Funktionen - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Selbstgeschriebene applikationsweite Funktionen Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 24 August 2009 - 04:16 PM

Hi,
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!
0

#2 User is offline   Dave 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 187
  • Joined: 09-October 08

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.
0

#3 User is offline   horizons 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 116
  • Joined: 18-December 08

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.
0

#4 User is offline   Dave 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 187
  • Joined: 09-October 08

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.
0

#5 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 25 August 2009 - 03:41 AM

Die require - Idee halte ich auch nicht für gut.
Kannst du deinen Vorschlag konkretiesieren dave?
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#6 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,013
  • Joined: 06-October 08
  • Location:Upper Palatinate

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 ;)
0

#7 User is offline   horizons 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 116
  • Joined: 18-December 08

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.
0

#8 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 08-May 09

Posted 25 August 2009 - 05:10 AM

View Postyii, on 24 August 2009 - 04:16 PM, said:

Hi,
wo schreibt ihr selbstgeschriebene Funktionen die Applikationsweit aufgerufen werden können?


der protected/components - Ordner zum Beispiel ist im include_path. Dort eine Klasse rein mit statischen Methoden und fertig. Kannst du überall verwenden.
0

#9 User is offline   Dave 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 187
  • Joined: 09-October 08

Posted 25 August 2009 - 05:51 AM

View Postyii, on 25 August 2009 - 03:41 AM, said:

Die require - Idee halte ich auch nicht für gut.
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?
0

#10 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

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
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#11 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 26 August 2009 - 03:12 AM

Dann weist du jedenfalls wo sie definiert ist ;)
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users