Si infatti, quella è una soluzione ma non mi piace del tutto.. avrei di gran lunga preferito un settaggio nell'ini set.Originariamente inviato da bubi1
Beh, anche se non riuscirei a indovinare nessuna ragione perche' cio` possa essere necessario, e' facile.
Ad esempio nel caso del mysql, vai nel sorgente, apri ext/mysql/php_mysql.c, trova la funzione php_mysql_do_query, sposta i controlli dal case 1 dello switch nel case 2, togli il case 1, ricompila, e poi se ti passeranno 1 parametro anziche 2, lo script restituira wrong param count.
Ma considera che:
Dovrai farlo per ogni driver/estensione disponibile sul tuo sistema: mysql, mysqli, mysqlnd per renderlo obbligatorio.
Dovrai ricordarti ad ogni nuova versione di modificare il sorgente.
E potresti dover incotrare altri problemi imprevisti.
Il motivo per cui mi serve questa funzione è la realizzazione di un sistema di moduli/plugin all'interno di un'applicazione che stò sviluppando.
Praticamente, voglio forzare chi scrive un modulo/plugin a utilizzare le classi che fornisco invece che, per qualsiasi motivo, lanciare una query con pg_query o mysql_query (utilizzerò postgresql, ma la cosa potrebbe essere interessante un domani anche per mysql).
Finora l'unica soluzione alternativa era, all'interno della classe che gestisce query e connessioni, creare un'altra connessione a un db senza dati usando un utente senza permessi subito dopo la connessione reale, così che tutte le funzioni pg_* o mysql_* avrebbero puntato sulla connessione 'fantasma' invece che su quella reale (che è protetta all'interno della classe, e quindi non invocabile a piacimento dall'esterno).
Ma questo significherebbe anche duplicare letteralmente le connessioni al db, e ciò è male![]()
Se ti và di leggerti tutte le risposte che mi hanno dato su stackoverflow trovi qui il 3d![]()

Rispondi quotando