Squire

Stato
Chiusa ad ulteriori risposte.

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
Presento qui il mio nuovo progetto in PHP. Si chiama Squire ed è un insieme di librerie completamente indipendenti tra loro (un po' come i componenti di Zend Framework) per velocizzare lo sviluppo delle proprie applicazioni. Squire sfrutta alcune delle principali funzionalità di PHP5 come l'autoloading e il namespacing. Inoltre è documentata con phpDocumentor e completamente unit-tested usando il framework PHPUnit.

Il progetto è open source e tutti possono contribuire. I sorgenti sono disponibili su GitHub: http://github.com/alessandro1997/squire.

L'ultima libreria che ho sviluppato è stata Routing, e come suggerisce il nome serve per automatizzare il routing. Fornisce un sistema simile a quello dei framework MVC per associare un determinato URL ad una risorsa della propria applicazione. Ogni route può avere dei parametri dinamici, e ogni parametro può richiedere che dei requisiti (espressi tramite PCRE) vengano soddisfatti. È anche possibile specificare dei valori di default per il parametro, nel qual caso diventerà opzionale inserirlo nell'URL.

Fatemi sapere cosa ne pensate.
 
Ciao il progetto mi sembra molto interessante e perfettamente progettato e organizzato (finalmente un programmatore PHP che ama seguire gli standard di programmazione).

La cosa che mi piace, inoltre, è che hai seguito il processo TDD (Test Driven Development) e fidati, non è da tutti :)

Se hai bisogno, posso aiutarti in qualche modo nel progetto..se vuoi contattami al mio indirizzo gmail: [email protected] (anche su google talk).

Una domanda: hai detto che hai implementato delle classi di routing per avere URL personalizzati in base alle esigenze..ma non vedo uno script di front che catturi tutte le richieste..deve essere ancora implementato ? Ciao e complimenti per il progetto
 
Ciao, grazie per i complimenti. Attualmente è in sviluppo la seconda versione di Squire, che ancora non è disponibile su GitHub. Ti posso mandare un'anteprima per e-mail e possiamo lavorarci insieme.

Per quanto riguarda il routing, nella seconda versione il componente è strutturato in maniera leggermente diversa. Non ho intenzione di implementare un front controller nel framework vero e proprio, in quanto è solamente una libreria, e quindi il programmatore è libero di strutturare la propria applicazione come vuole (può anche decidere, se il sito è piccolo, di usare una sola pagina invece di un file PHP per ogni controller). Potrei però rilasciare una standard edition in cui tutti i componenti sono configurati secondo l'architettura MVC. Sicuramente prima voglio finire la libreria.
 
Perdonami, mi correggo. Il post di presentazione non era aggiornato. Nella versione attuale su GitHub non è presente alcun componente per il routing. L'ho rimosso perché con determinati pattern non funzionava come avrebbe dovuto. Nella nuova versione dovrei aver risolto il problema.

Funziona più o meno in questo modo: si crea un oggetto Route contenente il pattern (es. /post/{slug}/{id}), i parametri di default (non è necessario che siano presenti nel pattern, questo per permettere anche il passaggio di parametri come il controller e l'azione) ed eventuali pattern personalizzati per i vari parametri (per il parametro {id} per esempio si potrebbe usare \d+).
Poi si crea un oggetto RouteCompiler, che compila le informazioni nell'oggetto Route e restituisce un oggetto CompiledRoute contenete un riferimento alla route iniziale e la PCRE da usare con le funzioni preg_*.
Si chiama poi il metodo getMatcher() della CompiledRoute che restituisce un oggetto UriMatcher. Questa è la fase finale del processo di routing. L'oggetto contiene un metodo match() per determinare se un URI corrisponde ad una route, ed eventualmente restituisce i valori dei parametri.

C'è poi un'ulteriore classe, Router che è in pratica una collezione di CompiledRoute e determina quali tra queste corrisponde ad un URI.
 
Ok ho capito perfettamente :)

Se hai bisogno di qualcosa contattami pure via mail, sarò felice di aiutarti con lo sviluppo :)
 
Dato che Squire stava diventando sempre più simile al framework Symfony. Visto che non mi piace reinventare la ruota, ho deciso di dedicare i miei sforzi ad un progetto con una comunità stabile e attenta alle spalle, correggendo bug e scrivendo alcuni test.

Il progetto è quindi chiuso.
 
Stato
Chiusa ad ulteriori risposte.