Creare ed eseguire un progetto CakePHP
Cos'è CakePHP?
CakePHP è un framework Web PHP open-source progettato per aiutare gli sviluppatori a costruire rapidamente applicazioni Web. Si basa sull'architettura MVC (Model-View-Controller) e offre un set potente di strumenti che semplificano compiti comuni come l'interazione con il database, la gestione dei form, l'autenticazione e la gestione delle sessioni.
Principali caratteristiche e vantaggi di CakePHP
- Sviluppo rapido: Fornisce numerosi strumenti per la generazione di codice, facilitando la creazione rapida di strutture di codice comuni.
- ORM flessibile e potente: Il livello ORM (Object-Relational Mapping) integrato semplifica le operazioni sul database.
- Sicurezza: Incorpora varie funzionalità di sicurezza, come la validazione dell'input, la protezione CSRF e la prevenzione delle iniezioni SQL.
- Supporto della comunità: Ha una comunità attiva e un ricco ecosistema di plugin.
- Bella documentazione: Fornisce documentazione dettagliata e tutorial per aiutare gli sviluppatori a iniziare rapidamente.
CakePHP è adatto a progetti di ogni dimensione, dalle piccole applicazioni ai grandi sistemi aziendali, consentendo agli sviluppatori di creare rapidamente applicazioni Web di alta qualità.
Creare ed eseguire un progetto CakePHP con ServBay
In questo articolo, utilizzeremo l'ambiente PHP fornito da ServBay per creare ed eseguire un progetto CakePHP. Utilizzeremo la funzione 'Host' di ServBay per configurare il server Web e accedere al progetto tramite una semplice configurazione.
Nota: Se sei un ex utente di NGINX o Apache
ServBay utilizza Caddy come server Web predefinito. Per gli utenti che migrano da NGINX e Apache a ServBay, ci sono alcuni cambiamenti chiave da notare:
Configurazione di Caddy
ServBay include Caddy, e la configurazione predefinita è già ottimizzata e testata. Gli sviluppatori possono gestire i siti tramite la funzione 'Host' di ServBay, senza necessità di modificare manualmente il file di configurazione di Caddy.
Regole di riscrittura e .htaccess
In NGINX e Apache, gli sviluppatori devono spesso scrivere le proprie regole di riscrittura e file .htaccess per gestire le riscritture degli URL e altre impostazioni. Tuttavia, con ServBay, queste regole sono già configurate per Caddy, evitando la necessità di scrivere regole personalizzate, a meno di esigenze particolari.
Ulteriori informazioni
Per ulteriori dettagli, consulta Rewrite e htaccess, Come migrare un sito Apache a ServBay, Come migrare un sito NGINX a ServBay.
Creare un progetto CakePHP
TIP
ServBay consiglia agli sviluppatori di posizionare i siti nella directory /Applications/ServBay/www
per una gestione facilitata.
Installare Composer
ServBay include già Composer preinstallato, non è necessario installarlo separatamente.
Creare un progetto CakePHP
Utilizzare Composer per creare un nuovo progetto CakePHP:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4Accedere alla directory del progetto
Accedere alla nuova directory del progetto CakePHP:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Configurazione iniziale
Configurare le variabili d'ambiente
Configurare le informazioni di connessione al database e altre variabili d'ambiente nel file
config/app_local.php
. Assicurarsi che le seguenti configurazioni siano impostate correttamente:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
Configurare il server Web
Usare la funzione 'Host' di ServBay per accedere al progetto CakePHP tramite il server Web. Nella configurazione 'Host' di ServBay, aggiungere un nuovo host:
- Nome:
My First CakePHP Dev Site
- Dominio:
servbay-cakephp-test.local
- Tipo di sito:
PHP
- Versione PHP: scegliere
8.3
- Directory radice del sito:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Per i dettagli sui passaggi, consulta Aggiungere il primo sito.
Aggiungere codice di esempio
Aggiungere il seguente codice nel file config/routes.php
per visualizzare "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Aggiungere il seguente codice nel file src/Controller/PagesController.php
:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
Accedere al sito
Aprire il browser e accedere a https://servbay-cakephp-test.local
, vedrai la pagina che visualizza Hello ServBay!
.
Esempio con database NoSQL
Esempio con Memcached
Installare l'estensione Memcached
In ServBay, l'estensione Memcached è già preinstallata, non è necessario installare nulla.
Configurare Memcached
Configurare le informazioni di connessione a Memcached nel file
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Configurare le rotte
Aggiungere il seguente codice nel file
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Utilizzare Memcached
Usare la cache nel controller:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Aprire il browser e accedere a
https://servbay-cakephp-test.local/memcached
Esempio con Redis
Installare l'estensione Redis
In ServBay, l'estensione Redis è già preinstallata, non è necessario installare nulla.
Configurare Redis
Configurare le informazioni di connessione a Redis nel file
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Configurare le rotte
Aggiungere il seguente codice nel file
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Utilizzare Redis
Usare la cache nel controller:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Aprire il browser e accedere a
https://servbay-cakephp-test.local/redis
Esempio con database relazionale
Creare struttura del database e file di migrazione
Creare file di migrazione
Utilizzare lo strumento Bake di CakePHP per creare il file di migrazione:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Eseguire la migrazione
Utilizzare il comando CakePHP per eseguire la migrazione e creare la tabella del database:
bashbin/cake migrations migrate
1
Esempio con MySQL
Configurare MySQL
Configurare le informazioni di connessione a MySQL nel file
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9Configurare le rotte
Aggiungere il seguente codice nel file
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Aggiungere la tabella User
Salvare il seguente codice nel file
src/Model/Table/UsersTable.php
.php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Inserire dati degli utenti
Inserire dati degli utenti nel controller:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Aprire il browser e accedere a
https://servbay-cakephp-test.local/mysql-add
ehttps://servbay-cakephp-test.local/mysql
Esempio con PostgreSQL
Configurare PostgreSQL
Configurare le informazioni di connessione a PostgreSQL nel file
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10Configurare le rotte
Aggiungere il seguente codice nel file
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Aggiungere la tabella User
Salvare il seguente codice nel file
src/Model/Table/UsersTable.php
.php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Inserire dati degli utenti
Inserire dati degli utenti nel controller:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Aprire il browser e accedere a
https://servbay-cakephp-test.local/pgsql-add
ehttps://servbay-cakephp-test.local/pgsql
Con questi passaggi, hai creato ed eseguito con successo un progetto CakePHP utilizzando le funzionalità offerte da ServBay, collegato a diversi database e richiamato i dati.