/ask_mvc

Piccolo framework MVC di esempio

Primary LanguagePHP

ask_mvc

Piccolo framework MVC di esempio, costruito per mostrare come costruire applicazioni PHP che seguono il pattern MVC.

Come installarlo e farlo funzionare

Installazione dei file PHP

Ci sono due modalità per questo primo passaggio, elencate qua sotto:

Modalità semplice

Andare nella sezione release e scaricare il file zip più recente, scompattarlo all'interno della propria cartella root del web server e procedere con le istruzioni sotto. Il "problema" di questa modalità è che le release non è detto che vengano tenute aggiornate con le ultime modifiche fatte nel repository

Modalità meno semplice

Scaricare tutti i file da GitHub e copiarli in una cartella all'interno della root del web server, successivamente utilizzare Composer per l'installazione delle libreria Plates.

Caricare il database

Tra i file presenti nella cartella principale si trova anche un file esportato dal database di esempio che si chiama ask.sql. Deve essere importato all'interno del proprio database MySQL e eventualmente va creato un utente con i permessi corretti d'accesso. Le informazioni sulla connessione si trovano nel file Util/Connection.example.php e da lì possono essere adattate nel modo che si ritiene corretto per la propria configurazione. Il file poi deve essere copiato e rinominato (o solo rinominato), in modo che si chiami Connection.php e si trovi sempre nella cartella Util.

Configurazione della root del server

Premessa: a seconda di dove verranno messi i file, alla radice del server web o in una sottocartella, alcune link potrebbero non funzionare, poichè se li si mettono relativi assumono forme sbagliate in relazione al file nel quale sono inclusi, che può essere a profondità diverse, d'altronde se li avessi messi assoluti ci sarebbe stata la necessità di "installare" l'applicazione nella posizione scelta da me. La soluzione adottata è stata quella di avere una variabile di configurazione messa nel file conf/config.php di nome $ROOT che deve contenere al suo interno il nome della cartella dove sono stati copiati i file dell'applicazione.

Esempi:

  • Se tutti i file sono copiati nella root del web server (la cartella htdocs in XAMPP o /var/www/html in alcune distribuzioni Linux) allora il settaggio corretto è $ROOT = "";
  • Se tutti i file sono copiati nella sottocartella ask_mvc allora il settaggio corretto sarebbe $ROOT = "/ask_mvc";
  • Se tutti i file sono copiati nella sottocartella PHP/ask_mvc allora il settaggio corretto sarebbe $ROOT = "/PHP/ask_mvc"; Spero di aver reso l'idea...

A questo punto nei vari template, dove servisse creare dei link, è stato definita una funzione che può essere chiamata in modo da aggiungere la radice e creare il percorso corretto. Questa funzione si chiama root_path e può essere usata nel seguente modo:

<form action="<?=$this->root_path()?>/question/add" method="post">

In questo esempio la action della form avrà ad esempio il valore /ask_mvc/question/add se $ROOT è uguale a /ask_mvc.

Come contribuire

Questa sezione è per gli studenti che volessero contribuire aggiungendo del proprio codice: credo che contribuire abbia un ottimo valore didattico, perchè permette di usare git in maniera più realistica, permette di vedere come funziona la collaborazione nella scrittura di codice a più mani e magari è anche divertente. Come procedere:

  • fare un fork di questo repository
  • decidere su quale aspetto si vuole lavorare o vedere se c'è già un issue aperto che può interessare
  • se ci fosse già un issue aperto di interesse non ancora assegnato, proporsi per risolverlo
  • se invece si vuole proporre un nuovo issue iniziare a descrivere bene cosa si vuole fare, che poi ve lo assegno
  • NON procedere in maniera autonoma, altrimenti si rischia poi di non riuscire a fare un merge pulito, ma di avere proprie modifiche che si vanno a sovrapporre a quelle di altri
  • una volta capito cosa fare creare un nuovo branch nel proprio repository e procedere con il codice.
  • una volta finito seguire le indicazioni che trovate qua, in cui è indicato come procedere per arrivare a una pull-request fatta verso questo repository.
  • A questo punto parte una discussione su quanto fatto con eventuali richieste di modifiche e quando si arriva a un punto soddisfacente la pull-request verrà integrata nelle modifiche