Impostazione delle variabili $ _POST come mezzo per passare i dati / Non passare i parametri nelle funzioni

3

Ho una legacy applicazione web PHP in cui quasi ogni funzione fa riferimento a variabili $ _POST - recuperando i loro valori, AND impostandoli (o impostando nuove variabili POST) come mezzo per comunicare con il codice chiamante o altre funzioni.

es:

function addevent()
{
...
$add_minutes=$_POST['minutes'];     
...
$_POST['event_price']=''; 
...
}

Avrei pensato che l'approccio diretto sarebbe stato quello di passare a una funzione tutti i valori di cui ha bisogno e restituire tutto ciò che generano.

Come programmatore di vecchia scuola, anche se un po 'fuori di testa ora, trovo questa struttura grottescamente inquietante - dove i dati vengono passati arbitrariamente dappertutto. Cosa pensano gli altri? L'approccio sopra è accettabile adesso?

Modifica 1

Un caso d'uso concepibile è il seguente. Questa è una funzione che gestisce i tag embed o un file caricato.

function brandEvent($edit_id='')
{
...
    switch($_POST['upload_or_embed'])
    {
        case 'embed':
        ...
        // uses $_POST['embed_video_code']
        ...
        break;
        case 'upload':
        ...
        // uses DIFFERENT POST variables
        ...
    }
}

Questa è una struttura di codice ragionevole?

    
posta siliconpi 30.07.2011 - 12:39
fonte

2 risposte

4

As an old-school programmer, albeit a bit out of touch now, I find this structure grotesquely unsettling - where data is passed arbitrarily all over the place. What do others think?

Anch'io trovo questa struttura grottesca inquietante. Queste funzioni dovrebbero essere atomiche, indipendenti da influenze esterne. I tuoi esempi possono essere chiamati programmazione per coincidenza e questa è una pratica orribile. È un codice non valido a seconda degli effetti collaterali e dei globali e probabilmente causerà mal di testa ai programmatori di manutenzione. Questo stile inoltre limita efficacemente la riusabilità e la testabilità di tali funzioni, poiché sono così strettamente accoppiate a uno specifico POST di variabili (probabilmente dalla vista).

Questo approccio non è assolutamente accettabile.

    
risposta data 30.07.2011 - 13:12
fonte
1

As an old-school programmer, albeit a bit out of touch now, I find this structure grotesquely unsettling - where data is passed arbitrarily all over the place. What do others think? Is the above approach acceptable now?

No, l'approccio di cui sopra non è completamente accettabile ora. Se mai, era molto più accettabile di adesso. Un tale codice è praticamente impossibile da ragionare e sarebbe un pasticcio incredibilmente irraggiungibile. Hai assolutamente ragione di etichettarlo come odioso.

    
risposta data 30.07.2011 - 14:49
fonte

Leggi altre domande sui tag