TinyPHP è una raccolta di librerie PHP per lo sviluppo di siti web, applicazioni e API REST. Include le funzioni che ricorrono più spesso in un progetto, senza imporre una particolare struttura del codice.
Il progetto nasce da un'esigenza pratica: evitare di riscrivere le stesse funzioni o copiarle da un'applicazione all'altra. Nel tempo queste librerie sono state raccolte in un unico progetto, con un'interfaccia comune e moduli attivabili secondo necessità.
Struttura base
TinyPHP non è un framework completo come Laravel o CakePHP. Non impone il pattern MVC, un'organizzazione delle cartelle o convenzioni sui nomi. Le librerie possono essere integrate in un progetto PHP esistente, mantenendo il controllo sulla sua struttura.
Il punto di ingresso è costituito da poche istruzioni:
require_once 'tinyphp/tinyphp.php';
TinyPHP::RegisterRoute('/', 'pages/home.php');
TinyPHP::RegisterRoute('/api/users/:id', 'api/user.php');
TinyPHP::Register404('pages/404.php');
TinyPHP::Run();
Il router associa gli indirizzi ai rispettivi script PHP. Supporta parametri dinamici negli URL, prefissi comuni e pagine per gli errori 404. Lo stesso meccanismo può servire pagine HTML o endpoint REST.
È disponibile anche una modalità manutenzione. Permette di mostrare una pagina temporanea, mantenendo accessibili determinati indirizzi, come endpoint di controllo o webhook.
Le funzionalità
Il framework comprende moduli dedicati alle operazioni più comuni nello sviluppo backend.
- API HTTP: lettura dei parametri GET e POST, costruzione delle risposte e gestione dei codici di stato.
- Database MySQL: esecuzione di query e recupero dei risultati, anche con parametri separati dal testo SQL.
- Accesso e sicurezza: autenticazione tramite cookie o token
X-Auth-Token, generazione di UUID e nonce, funzioni di sanitizzazione e supporto TOTP per i codici temporanei di autenticazione. - File e dati: upload e download, importazione ed esportazione CSV/Excel, gestione di date e importi.
- Funzioni applicative: configurazione, log su file, traduzioni tramite dizionari JSON e integrazione con Google reCAPTCHA v3.
Le funzioni rimangono separate in moduli. Un piccolo sito non deve necessariamente caricare le stesse componenti di un'applicazione con autenticazione, database e pagamenti.
Integrazioni opzionali
Alcune funzionalità si appoggiano a librerie esterne. È il caso dell'invio di email tramite PHPMailer, della gestione dei fogli Excel con PhpSpreadsheet, dei pagamenti Stripe e della generazione di codici QR.
Questi moduli vengono abilitati soltanto quando servono. Per le funzioni di base non è richiesta l'installazione dell'intero insieme di dipendenze esterne.
TinyPHP include anche strumenti per comporre email con allegati e destinatari in copia, oltre a funzioni per gestire importi e date.
Ambito di utilizzo
TinyPHP è pensato soprattutto per progetti nei quali un framework completo introdurrebbe più struttura di quella necessaria: siti web, piccole applicazioni gestionali, servizi backend ed endpoint API.
Non cerca di sostituire i framework più articolati. L'obiettivo è ridurre il codice ripetitivo e lasciare al programmatore le scelte sull'architettura dell'applicazione.
Il progetto è distribuito con licenza MIT e richiede PHP 7.4 o successivo.
Codice sorgente e documentazione: TinyPHP su GitHub.