AMPPS
AMPPS, che potete scaricare qui, è un ambiente di sviluppo LAMP che vi permette di avere in un’unica soluzione Apache, PHP e MySQL.
Dopo averlo scaricato, create una vostra directory di lavoro che assocerete al dominio locale che andrete a creare in AMPPS. Per comodità chiameremo questo dominio phpecommercemvc.test.
MySQL
Il nostro database avrà tre tabelle:
products: la tabella dei prodotti.orders: la tabella degli ordini.customers: la tabella dei clienti.
Di seguito riportiamo la struttura delle tabelle.
products
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`description` text NOT NULL,
`manufacturer` varchar(255) NOT NULL,
`price` decimal(10,2) NOT NULL,
`image` varchar(255) NOT NULL,
`slug` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE `products`
ADD PRIMARY KEY (`id`);
orders
CREATE TABLE IF NOT EXISTS `orders` (
`id` varchar(255) NOT NULL DEFAULT '',
`created` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`cart` text,
`customer` varchar(255) DEFAULT NULL,
`billing` varchar(255) DEFAULT NULL,
`shipping` varchar(255) DEFAULT NULL,
`total` decimal(10,2) DEFAULT NULL,
`total_taxes` decimal(10,2) DEFAULT NULL,
`status` tinyint(1) DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `orders`
ADD PRIMARY KEY (`id`),
ADD KEY `id` (`id`);
customers
CREATE TABLE IF NOT EXISTS `customers` (
`id` varchar(255) NOT NULL,
`firstname` varchar(255) DEFAULT NULL,
`lastname` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `customers`
ADD PRIMARY KEY (`id`);
In pratica la tabella dei clienti è collegata alla tabella degli ordini mediante i campi customers.id e orders.customer. Il campo orders.cart conterrà la versione serializzata del carrello di ciascun ordine in modo che in futuro si potrà sempre avere accesso alle singole voci degli ordini.
Struttura dei file e delle directory
La struttura dei file e delle directory del nostro spazio di lavoro in questa fase sarà la seguente:
/core
/classes
/PHPEcommerce
/lib
/src
/locales
/templates
/email
autoload.php
config.php
/public
/assets
/css
/images
/js
/views
.htaccess
index.php
add-to-cart.php
cancel.php
cart.php
checkout.php
payment.php
product.php
thank-you.php
manufacturers.php
manufacturer.php
I file PHP multipli in questa fase saranno poi rimossi quando passeremo all'approccio MVC lasciando il solo index.php.
Apache
In questa prima fase useremo regole di riscrittura multiple nel file .htaccess per mappare gli URL con i rispettivi file PHP.
RewriteEngine On
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
RewriteRule ^/?manufacturer/(.*?)/?$ /manufacturer.php?id=$1 [L]
RewriteRule ^/?manufacturers/?$ /manufacturers.php
Da notare il modificatore ? nelle espressioni regolari usato vicino agli slash dell’URL: così facendo consentiamo la selezione sia degli URL che hanno uno slash sia di quelli che ne sono privi.
PayPal
Collegatevi alla Sandbox di PayPal e create due account, uno di tipo Business che userete per accettare i pagamenti fittizi ed uno normale che userete per effettuare tali pagamenti.
Conclusione
Il setup del nostro ambiente di lavoro è completo. Nel nostro prossimo capitolo inizieremo a ragionare in termini di classi e della loro interazione.
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: