Situazione attuale
Gestisco un sito Web con un modulo semplice che gli utenti compilano con semplici dati di progettazione. Premono Submit
e il codice PHP prende il sopravvento e fa varie aritmetiche di base su quei numeri, secondo le formule codificate .
Ogni volta che c'è un cambiamento, l'utente deve parlare con me, e devo cambiare le formule nel codice, e quindi aggiornare il repository.
L'utente ha richiesto il controllo sulle formule. Potrei dare loro l'accesso al codice, ma non sono un programmatore e i cambiamenti sono abbastanza rari da dove molto probabilmente finirò per aiutarli comunque. Come in, potrei anche mantenere l'accesso al codice da solo.
Excel sull'approccio Web
Un altro modo per farlo è implementare il sottoinsieme di "Excel sul Web", in quanto essenzialmente questa è la funzionalità richiesta. Come se non ne sono sicuro. Inoltre, l'output di formule viene utilizzato in diversi pezzi di codice mission-critical, quindi non è solo eccellente sul web dove si inseriscono formule e si vedono i risultati senza ulteriori azioni. L'output delle formule viene utilizzato nel codice critico utilizzato per gestire varie altre funzionalità. Aka, ho bisogno di un codice modificabile dall'utente, i cui risultati posso ricollegarlo al codice sorgente principale.
eval
approach
Potrei avere una casella in formato libero in cui l'utente inserisce un codice PHP specifico e quindi uso solo eval
per ottenere il risultato desiderato, ma eval
apre un enorme buco di sicurezza sul sito web.
Approccio al parser
Potrei fare come sopra ma invece di eval
, implementare un parser completo che fa la funzionalità di Excel limitata per me. Mi sto appoggiando a questo modo, ma non so davvero come impostarlo al meglio, poiché scrivendo il mio parser personale potrei finire per fare un sacco di lavoro. Ad esempio, l'interfaccia dovrebbe essere "per riga" o "casella di forma libera"? La codifica dell'interfaccia può diventare una notevole quantità di lavoro in sé. La codifica dell'interfaccia impropria può essere ancora più utile se in un secondo momento dovrà essere abbattuta, al fine di implementarne una migliore.
Domanda
Quale è un buon modo per consentire all'utente di modificare il controllo su formule che sono attualmente codificate nel codice, ma senza che questo diventi un progetto enorme?
Solo per ridimensionare, forse qualcosa che può essere implementato entro una o due settimane, incluso il test.