Visualizzazione risultati 1 fino 10 di 10
Like Tree5Likes
  • 1 Post By dreadnaut
  • 1 Post By dreadnaut
  • 1 Post By dreadnaut
  • 1 Post By dreadnaut
  • 1 Post By dreadnaut

Discussione: "Vanilla PHP" VS "Laravel framework"

  1. #1
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    60

    Lightbulb "Vanilla PHP" VS "Laravel framework"

    Laravel continua ad evolversi e di conseguenza devo tebere aggiornato il progetto Laravista (Laravel on AlterVista)



    Ma per progetti più piccoli (fatti magari da una sola "paginetta") non sarebbe male fare un passo indietro, e tornare ad utlizzare PHP senza framework (quindi senza dipendenze) e cavarsela solo usando Vanilla PHP:


    E' veramente fattibile o si finisce per fare un grande "spaghetti code" ?? 🍝

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,322

    Predefinito

    C'è un punto in cui il framework diventa quasi indispensabile, ma per la maggior parte dei siti, per quelli che non cercano di essere una complessa applicazione, "vanilla" è sufficiente.

    Il punto importante per evitare gli spaghetti è non spargere 'responsabilità' ovunque. Se devi accedere al database, metti tutte le funzioni relative in un posto, e chiamale dalle pagine. Se hai tante pagine e dati, usa dei template che facciano l'escape per te. Così ogni pagina non si riempie di query, escape, etc, e rimane comprensibile e facile da modificare nel tempo.

    Il mio sito è costruito attorno a pochi blocchi che ho riutilizzato e raffinato negli anni: una libreria per i template, una per l'HTTP, una per il database. La logica delle pagine è pulita, perché la complessità è nelle librerie, invece di essere sparsa ovunque.
    Ultima modifica di dreadnaut : 13-09-2025 alle ore 22.52.59
    laravista likes this.

  3. #3
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    60

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    C'è un punto in cui il framework diventa quasi indispensabile, ma per la maggior parte dei siti, per quelli che non cercano di essere una complessa applicazione, "vanilla" è sufficiente.

    Il punto importante per evitare gli spaghetti è non spargere 'responsabilità' ovunque. Se devi accedere al database, metti tutte le funzioni relative in un posto, e chiamale dalle pagine. Se hai tante pagine e dati, usa dei template che facciano l'escape per te. Così ogni pagina non si riempie di query, escape, etc, e rimane comprensibile e facile da modificare nel tempo.

    Il mio sito è costruito attorno a pochi blocchi che ho riutilizzato e raffinato negli anni: una libreria per i template, una per l'HTTP, una per il database. La logica delle pagine è pulita, perché la complessità è nelle librerie, invece di essere sparsa ovunque.
    Se è open-source/public domain gli darei volentieri un occhio, anche per avere un esempio completo da seguire (router, controller, model, view)

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,322

    Predefinito

    Non ne ho mai pubblicato pezzi direttamente, ma PigroSQL è molto simile alla libreria che uso per il database. L'ho solo 'tradotta' in italiano.

    Vedi anche: https://forum.it.altervista.org/pubb...ori-pigri.html
    Ultima modifica di dreadnaut : 16-09-2025 alle ore 00.14.41
    laravista likes this.

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,322

    Predefinito

    Mi dilungo visto che ho tempo:

    Come router all'inizio puoi usare uno switch o match, che mappa dal percorso alla classe o metodo che vuoi invocare. I passi successivi:
    • accettare 'parametri' tipo /archivi/{anno}/{mese}, che internamente converti in una espressione regolare /archivi/(?<anno>.*)/(?<mese>.*)
    • pattern personalizzabili, tipo 'anno' => '20\d\d' così sposti la validazione nel routing

    Per i controller ci sono varie filosofie:
    • una classe per 'azione' (ad esempio Articoli/Index.php, Articoli/Create.php
    • una classe per 'risorsa' (dove hai Articoli.php con i metodi index() e create()

    Io preferisco il primo approccio, perché mi spinge a muovere la complessità nei modelli, ed ogni controller è molto semplice.

    Se hai un autoloader (Composer, o puoi scriverne uno in 8 righe), il router può creare il controller al volo, e poi usare method_exists()

    I modelli... dipende. Puoi andare nel tunnel dell'ActiveRecord, oppure avere delle semplici classi il cui ruolo è raccogliere tutti le operazioni su una singola risorsa. Per un sito semplice sono più maneggevoli.

    Per le viste può bastarti una singola funzione:
    Codice PHP:
    function render(string $__view, array $data) : string
    {
    extract($data);
    ob_start();
    include
    "viste/{$__view}.php";
    return
    ob_end_clean() ?: '';
    }
    Ma se vuoi fare le cose per bene la faccenda diventa complessa, quindi di solito suggerisco Twig o Latte.

    Puoi cominciare grezzamente con classi piene di metodi statici, ma se vuoi scrivere qualche test (con Pest?) è meglio avere degli oggetti che puoi instanziare. Dopo un po' finirai per aver bisogno di qualcosa che gestisca la dependency injection. Auryn funziona bene, ma un paio di anni fa me ne sono scritto uno io, che fa solo le cose che mi servono.

    Forse è quello il processo:
    1. cominci con qualcosa di semplice e grezzo, che faccia il suo lavoro
    2. se il progetto diventa più complesso, tiri dentro una o due librerie
    3. se la cosa ti appassiona, finisci per scriverti le tue librerie

    Occhio che cominciare con (3) è un dolore, e ti fa passare la voglia velocemente! Il punto è pubblicare un sito, non spendere mesi a scrivere il codice perfetto. L'ho imparato di persona: ho speso mesi dietro al codice, ed il mio sito ha fatto la muffa per 4-5 anni; poi ho messo su quattro file in croce online, ed ha funzionato.
    Ultima modifica di dreadnaut : 16-09-2025 alle ore 00.53.51
    laravista likes this.

  6. #6
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    60

    Predefinito

    Non sarebbe male un framework completo ("Pigro MVC") però con i nomi dei metodi in inglese :)

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,322

    Predefinito

    C'ho pensato eh, ma è un lavoro grosso e non è la missione della mia vita.

    Mi piace però l'idea di pubblicare qualcosa di piccolo ed educativo, così ho cominciato con il database, che è a mio parere la prima libreria utile per un sito piccolo che sta crescendo. Ce ne sono tante in inglese, ed ho pensato di raggiungere persone diverse scrivendola, contro mia abitudine, in italiano.

    Il prossimo passo, non saprei. L'upload dei file magari, oppure creare form ben strutturati in modo semplice.

    Ho in effetti "FacilForm" da qualche parte che crea un intero form con codice tipo
    Codice PHP:
    $form = (new FacilForm)
    ->
    add('nome*')
    ->
    add('cognome*')
    ->
    add('email = Indirizzo email', 'input/email')
    ->
    add('taglia', 'select', [ 'XS', 'S', 'M', 'L', 'XL', 'Altro' ])
    ->
    add('note', 'textarea')
    ->
    add('accetta_termini* = Accetto le condizioni di servizio', 'checkbox')
    ->
    add('Salva', 'button');

    # per aggiungere valori predefiniti
    $form->set($values); # [ 'nome' => 'Sardanapalo', 'cognome' => ... ]

    # per mostrare errori accanto ai campi
    $form->errors($errors); # [ 'email' => "Questo non è un indirizzo valido" ]

    # per inserirla nella pagina basta
    echo $form;
    laravista likes this.

  8. #8
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    60

    Predefinito

    🐘> Pensavo di farmi aiutare dal mio chatbot di fiducia per questo progetto. Sei capace di creare in PHP un framework MVC da zero, senza dipendenze e ben strutturato fatto di queste parti: routers, controllers, models e views?

    🤖> Sì, sono in grado di fornirti un'infrastruttura generale per creare un framework MVC in PHP. Tuttavia, tenere presente che questo è solo un esempio semplificato e potrebbe richiedere ulteriori miglioramenti e adattamenti a seconda delle tue esigenze specifiche.

    (vedi il risultato completo VanillaGPT 🐘🤖)

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,322

    Predefinito

    No grazie, leggere codice autogenerato fa male ai denti.

    Ci sono 20 anni di tutorial la fuori che saranno più corretti ed utili. Il primo che mi è saltato all'occhio: https://medium.com/@me_38439/how-to-...k-d0f86acc8f9d
    laravista likes this.

  10. #10
    laravista non è connesso Utente AlterBlog
    Data registrazione
    07-12-2019
    Messaggi
    60

    Predefinito

    La mia è anche una curiosità "scientifica", vedere se è possibile guidare un chatbot (Vibe coding) per fargli scrivere il codice magari in un linguaggio che non è il tuo (nel mio caso ormai PHP non lo uso più da anni in favore di Python) ma riuscendo a valutare il risultato, alla fine è stato addestrato su tutto il web magari ha pure utilizzato il link che hai condiviso, quindi non è che genera cose-a-caso ma in base alla continua interazione uomo-macchina tramite linguaggio naturale (è comunque affascinante anche se dovesse farmi venire il "mal di denti" 😬)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •