Quando l’aspirante sviluppatore che incontra armato di Laravel framework lo sviluppatore che armeggia con Codeigniter, il secondo è un uomo morto? Come risolvere il problema dell’ ENTRY LEVEL con Codeigniter, dal film PER UN PUGNO DI BYTE

Scacco e poi Matto!

Quando l’aspirante sviluppatore che incontra armato di Laravel framework lo sviluppatore che armeggia con Codeigniter, il secondo è un uomo morto? Come risolvere il problema dell’ ENTRY LEVEL con Codeigniter, dal film PER UN PUGNO DI BYTE

Ottobre 18, 2020 codeigniter 0

Innanzitutto quale é questo problema che salta fuori quando si inizia a costruire con Codeigniter? Senza ritornare alle citazioni del titolo che rimandano al capolavoro primo episodio della trilogia spaghetti western all’ italiana di Sergio Leone dal titolo per un pugno di dollari (non citato a caso visto che l’aspirante sviluppatore ha il problema di aggirare lo spaghetti code quando mette in piedi le sue applicazioni) perché quando richiamo in maniera lineare i miei file non vengono visualizzati in URL? Perchè Codeigniter è perverso di suo per cui vuole prima il path base che in genere in locale é:

localhost/nomecartedoverisiedenostrapp/

in questo modo il controller di default scatena nella sua definizione di classe un metodo index che mette in moto la index pagina per l’appunto per cui la visualizzazione non sarebbe intaccata nemmeno digitando URL http://localhost/nomecartelladoverisiedenostrapp/index.php/ . A questo punto dobbiamo fare un passo indietro e capire che come una pistola al poligono di tiro o anche solo indirizzata verso il cattivo Ramon (un superbo Gian Maria Volonté che recita dalla parte di quelli che hanno il fucile e che come cattivi vincono quasi sempre) risponde alla metafora perfetta del modello MVC di codeigniter perché di fatto se da un lato la pistola spara a un bersaglio che é la famosa VISTA dove vengono indirizzati i dati dal controller-pistola, dall’ altro abbiamo un modello che non fa altro che ricaricare la nostra colt fumante, inserendo la parte logica che serve per risolvere i problemi dalla canna della pistola. Quindi l’utente chiede, la richiesta arriva al controller che attiva il modello da cui si approvvigiona tornando indietro di preziose informazioni che vengono rispedite o sparate al mittente. In questo modo abbiamo uno schema che é quello dell’ URL BASE / PAGINA BASE (INDEX.PHP che può cambiare)/ METODI DEFINITI DENTRO LA CLASSE/EVENTUALI PARAMETRI

Un esempio concreto di problem solving capitato al sottoscritto può chiarire meglio la questione. Come mai dopo aver sviluppato la mia applicazione non la vedo di default quando digito la base url localhost/nomecartelladoverisiedemiapp ???? Non la vedo perchè il controler di default punta altrove per cui se io andassi nel famoso file routes.php e al posto di

$route[‘default_controller’] = ‘welcome’;

scrivessi un altro controller quello centrale della mia web app commentando la riga precedente con // all’ inizio per esempio con:

$route[‘default_controller’] = ‘stud_controller’;

a questo punto la definizione di classe contenuta all’ interno del file stud_controller.php prende i metodi che gli servono per costruire dinamicamente la sua personale index che non può essere quella di default contenuta nel download originale ma la vista appropriata definita dal mio applicativo. Tanto per essere chiari se dopo

http://localhost/CodeigniterProject/index.php/
http://localhost/CodeigniterProject/index.php/stud_controller

scrivessi anche il nome di un metodo specifico allunerei altrove come da istruzioni riportate dal controller che ha al suo interno tutti i rimandi alle varie pagine in base a quello definito dentro alle funzioni. Più difficile da spiegare che da farsi che dal momento che io per risolvere e rispondere alla domanda iniziale non devo fare altro alla fine che andare sul file routes.php dentro alla cartella config e decommentare la seconda riga per renderla eseguibili dopo aver trasformato la prima riga in commento (sempre con i due // all’ inizio). Mentre con il controller welcome si vede di default quello che offre il convento dopo il download, inserendo il personale controller vedo quello che io voglio vedere. Ovvio che persino le query diventano seguendo questo schema MVC molto perverse e ingarbugliate , per questo lo spaghetti code ben si accompagna allo spaghetti western tanto per restare in tema di articolo con il capolavoro per un pugno di dollari o anche parafrasando PER UN PUGNO DI BYTE!

$route[‘default_controller’] = ‘welcome’;
//$route[‘default_controller’] = ‘stud_controller’;

Nel primo caso sono dentro un applicativo da personalizzare nel secondo sono in pieno sviluppo personale con una pagina che dovrebbe farmi vedere un CRUD canonico. Comunque riassumento se io Clint armato di codeigniter mi vedo Ramon che si avvicina con Laravel fucile chiedendomi come faccio a personalizzare un controller per vedere come index una pagina arbitraria che non sia quella proposta da codeigniter in scaricamento, la risposta che devo dare é un altra domanda: HAI IMPOSTATO IL CONTROLLER DI DEFAULT SULLA ROUTE? Se poi Ramon cerca grane ed é ostico alla comprensione allora spiegategli anche che Laravel ha una potenza di fuoco maggiore per le piccole applicazioni che non hanno bisogno di un elefante per fare cose semplici ed elementari (dispendio energetico, rallentamenti, sprechi di risorse etc). Cocnlcudiamo con una frase ad effetto a quello che ha tentato di farci fuori con il fucile tecnologico Laravel, ribaltando le convinzioni di Ramon:

“Gringo… sei morto!”