Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

E-commerce in PHP: struttura iniziale e file

Creiamo una struttura di base per il nostro e-commerce utilizzando più file. Scopriamo così come una soluzione basata sui file multipli presenti numerosi problemi che dimostrano la validità del pattern MVC
Creiamo una struttura di base per il nostro e-commerce utilizzando più file. Scopriamo così come una soluzione basata sui file multipli presenti numerosi problemi che dimostrano la validità del pattern MVC
Link copiato negli appunti

In questa fase iniziale abbiamo separato la logica delle action del nostro e-commerce in file PHP separati per aiutarvi a comprendere il flusso dell’applicazione prima di effettuare lo switch al pattern MVC. In questo capitolo analizzeremo questi file.

Per i nostri scopi è utile richiamare alla memoria i contenuti del file .htaccess usati fino ad ora.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?product/(.*?)/?$ /product.php?id=$1 [L]
RewriteRule ^/?add-to-cart/?$ /add-to-cart.php
RewriteRule ^/?cart/?$ /cart.php
RewriteRule ^/?checkout/?$ /checkout.php
RewriteRule ^/?payment/?$ /payment.php
RewriteRule ^/?thank-you/?$ /thank-you.php
RewriteRule ^/?cancel/?$ /cancel.php

Si tratta di redirect elementari che riscrivono il percorso fisico dei file PHP con percorsi canonici privi del nome del file. L’unica riscrittura complessa è la prima dove il parametro id della query GET viene riscritto come /product/id.

index.php

Questo file gestisce la home page del nostro sito che rappresenta anche la pagina principale dell’applicazione.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->index();
?>

Viene caricato il file di configurazione dell’applicazione e incluse le classi principali del sito. Quindi viene inizializzata la sessione ed impostata la localizzazione delle stringhe in Italiano.

A questo punto viene invocato il metodo Shop::index() della classe Shop che gestisce l’applicazione.

product.php

Questo file gestisce la visualizzazione del dettaglio del singolo prodotto.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->product();
?>

Anche qui viene invocato il metodo specifico della classe principale per gestire questo endpoint del sito. Come si può facilmente intuire, il metodo prende l’ID passato nella query GET e popola i dati di una view specifica dopo la query al database.

add-to-cart.php

Questo file gestisce l’aggiunta di un prodotto al carrello.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
$shop = new Shop();
$shop->addToCart();
?>

cart.php

Questo file gestisce il carrello e le azioni correlate ( rimozione dei prodotti, aggiornamento della quantità, proseguire al checkout, continuare con gli acquisti).

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->cart();
?>

checkout.php

Questo file gestisce la cassa/checkout ed il pagamento tramite PayPal.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->checkout();
?>

L’utente inserisce i suoi dati e quindi viene reindirizzato sul sito di PayPal per completare l’acquisto.

payment.php

Questo file gestisce le transazioni con PayPal, ossia la risposta che PayPal invia dopo aver reindirizzato il cliente dopo il pagamento.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->payment();
?>

thank-you.php

Questo file conclude la procedura di acquisto cancellando la sessione, inviando un e-mail di conferma dell’ordine e visualizzando un messaggio di ringraziamento per l’utente.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->thankYou();
?>

cancel.php

Questo file gestisce l’eventualità dell’annullamento del pagamento PayPal da parte dell’utente reindirizzando quest’ultimo alla pagina di checkout.

<?php
require_once('config.php');
require_once('classes/autoload.php');
session_start();
setlocale(LC_ALL, 'it_IT');
$shop = new Shop();
$shop->cancel();
?>

Problemi con questa soluzione

Sicuramente la ridondanza è il primo problema che appare evidente usando una soluzione basata su file multipli. Molte routine appaiono identiche su più file, rendendo la manutenzione e la scalabilità del codice un problema non indifferente.

Infatti se volessimo aggiungere un nuovo endpoint, non solo dovremmo creare una nuova action ma anche un nuovo file alla nostra struttura dopo aver creato un’altra regola nel file .htaccess.

Fortunatamente, come vedremo, questi problemi verranno risolti dall’adozione del pattern MVC.

Ti consigliamo anche