Consiglio : programmazione OO e parametri

ho parecchie funzioni in una classe che devono gestire dati che arrivano da form, il consiglio che mi serve è:

è meglio recuperare direttamente i dati con $_POST dentro la funzione o far passare i dati come parametro alla funzione?

vi posto un esempio :

    function AddTicket(){
       /**
      * Add a ticket in the database
      * @return     void
      * @param      string   $tickname
      * @param
      * @author     Trashofmasters <trashofmasters@gmail.com>
      * 
      */
   }

la funzione devo ancora scriverla

cmq mi conviene chiamarla così:

$class->AddTicket();

o così:

$ticketname = (!ini_get("magic_quotes_gpc")) ? addslashes($_POST['ticketname']) : $_POST['ticketname'];
$class->AddTicket($ticketname);

???

in questo modo dovrei gestire i valori nella pagina in cui la chiamo , nell'altro invece li gestirei direttamente nella funzione

cosa mi consigliate?

 :bye:

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

ciao,

io solitamente passo i parametri che mi servono alla funzione, in quanto potrebbe essere utilie soprattutto in fase di testing del codice della classe creare un oggetto passando direttamente i valori senza dover inviare il form ogni volta...

e poi sinceramente credo sia più ordinato...

poi non so...

 :bye:

risposto 10 anni fa
Xscratch
X 0 X

mhh si come debug potrebbe anche essere meglio , ma secondo me sarebbe meglio processare i dati nella funzione stessa invece che nella pagina

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Anche io sono per passare i dati durante la chiamata del metodo. In questo modo non vincoli la classe a lavorare solo con i dati presenti in $_POST e rispetti la filosofia del riutilizzo del codice.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ma così non incasino leggermente di più il codice delle pagine?

cmq ste funzioni dovrebbero lavorare solo con dati provenienti da form $_POST non credo che avrò problemi :) cmq grazie , credo che quando mi serviranno funzioni che dovranno lavorare con diversi tipi di dati li passerò come parametro

qual'è la filosofia del riutilizzo delcodice ? di pensare la classe che si sta scrivendo come se dovesse essere un framework (  o simile )???

ciao!

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

La programmazione ad oggetti (fatta bene) permette di prendere una classe scritta per una applicazione ed usarla per un nuovo programma facendo un semplice copia-incolla. Qesto beneficio si rende evidente quando le classi sono state costruite facendo uso dell'ereditarietà.

Se ad esempio in un programma ho realizzato una classe "Ferrari" costruendo dapprima una classe "automobile" ed esendendola, allora in un nuovo programma per realizzare la classe "Maserati" potrò partire dalla classe "automobile" che ho già fatto.

Il concetto di framework si basa sul principio del riutilizzo del codice ma lo porta al suo estremo. L'utilizzo del framework è di per se un riutilizzo. E' come se qualcuno si mettesse a creare classi "automobile" non perché ha bisogno di una classe "Ferrari" ma perché è molto probabile che qualcuno in futuro ne abbia bisogno.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

devo studiarmi bene i concetti di ereditarietà delle classi allora :D

ciao e grazie

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Puoi utilizzare una funzione wrapper, che associ i valori passati tramite post o get a delle variabili private della classe.

Ma tieni presente che se dai per scontati i nomi delle variabili del form (i nomi dei campi stessi del form ad esempio), poi appunto come ti dice Gianni, in un altro progetto per riusare la tua classe, dovrai come minimo agire sui nomi di tali campi, che sicuramente varieranno.

Potresti usare il metodo utilizzato in javascript, dove già tutto è una classe; qui i nomi dei campi dei form, se non dichiarati, sono enumerati dal programma stesso, ad esempio form[0].input[1].value; dove form[0] è il primo form incontrato nella pagina e così via.

Se crei una classe che fa questo, allora ti basterà un ciclo for o foreach per sapere quanti parametri dovrà aspettarsi la classe via get o post, e quindi iterare tra i campi alla scoperta dei valori.

Per esempio:

function FieldItem($post = true) {
 $itmCampi = count($e qui ti inventi come sapere quanti campi ci sono);
 
 for $index = 0; $index <= $itmCampi; $index++) {
   if ($_POST[$index] != '') fai qualche cosa;
 }
}

l'unico valore passato, alla funzione è un valore che dice alla variabile se deve iterare tra post o get.

Ma ora come ora non ho molta voglia di pensarci  :D

}

risposto 10 anni fa
Marco Grazia
X 0 X

altra domanda : se in una funzione devo far ritornare una cosa del tipo

$query = "SELECT * FROM tablename";

$lol = mysql_query($query);

$asd = mysql_fetch_array($lol);

return $asd;

posso poi fare

while($ha = $class->nomefunzione()){}

come posso fare per fare questo???

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Così ti complichi la vita e comunque non ha molto senso. E' più conveniente fare la fetch nel metodo in cui hai fatto la query e restituire tutti i risultati con il return.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

quindi è meglio ritornare l'array :)

grazie

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda