Dove Mettere Una Funzione Pubblica?

Salve a tutti, sono ancora agli inizi con Yii.

Nella mia applicazione ho bisogno di avere a disposizione una funzione, che nello specifico mi scrive dei movimenti di log nel mio database.

La devo poter chiamare da qualunque controller in qualsiasi momento.

Qual’è il modo migliore per realizzarla (devo fare un modulo/componente/ o che altro?) ed in che posto va messa e configurata?

Grazie in anticipo

potresti metterla nel model Log di riferimento, visto che salvi i log nel db.

Oppure fatti un Helper dentro la cartella components

Io mi sono fatto una classe Generale in components dove metto tutte le cose di impiego generale che mi servono nell’applicazione (ben poche, in realtà).

grazie per le info. Vi rigiro alcune considerazioni sulle soluzioni proposte:

  • st4nny - Model del log di riferimento: questa soluzione, x le mie conoscenze attuali è la più semplice da fare. Basta che creo con gii il model della mia tabella log e poi vado ad implementare nel model le altre funzioni che mi servono.

  • st4nny - Helper dentro Components: x adesso non ho idea di come si fa, ma devo studiare. Non mi è chiaro se una volta creato l’helper, devo poi settarlo ad esempio nel mail.php di configurazione.

  • Sergio Neddi - Classe Generale in Component: penso sia simile alla soluzione precedente, se possibile potete mettermi un esempio x capire come partire?

grazie

Io ho fatto così: ho creato un file che ho chiamato Generale.php e l’ho messo dentro components.

Dentro Generale.php ho scritto:




<?php


class Generale {


	public static function prova($test){

		echo "Ciao $test!";

	}

}

?>



Poi dove volevo ho scritto la chiamata:


Generale::prova('Sergio');

E l’esito è stato:

Ciao Sergio!

Spero che sia chiaro. La roba in components viene caricata di default, non servono cose particolari. E quindi ci può stare pure il Generale (quando non è dietro la collina… :D ).

chiarissimo e gentilissimo, farò qualche prova!

Grazie 1.000 a tutti!

giusto… come suggerito da Sergio

questo è un Helper… il file si chiama Helpers.php (dentro components)




<?php 

class Helpers extends CComponent

{

	public static function invioMail($id) {

	    //codice

	}

}

?>	



per richiamare la tua funzione da dove ti pare Helpers::invioMail($id);

Io quando devo fare una cosa del genere faccio un passo indietro e analizzo la finalità della funzione che devo utilizzare… se è specifica di un particolare "oggetto", allora sta bene dentro la classe su cui probabilmente sto già lavorando.

Altrimenti, come suggerito dagli altri, penso a un component.

Se poi la cosa cresce (più funzioni/metodi), e desidero che sia utilizzabile anche su altre installazioni di yii, penso a un modulo.

ciao.

Salve,

Ma dove trovo la cartella componente nell’installazione Basic.

E che differenza c’è tra l’esempio con classe Helper e classe Generale ?

Grazie.

La cartella Component la crei nella stessa root di Models, Controllers, View.

L’esempio Helper e Generale sono identici. Uno usa il nome tecnico “Helper”, l’altro usa un nome che si ricorda subito “Generale” poiche’ contiene funzioni generali x l’app.

Se sono funzioni globali di utilità le metto in un file global.php che includo direttamente nell’index.php, altrimenti se ho bisogno dell’“ambiente” yii un component Helper come ha suggerito st4nny