Creare e avviare un progetto CakePHP
Cos'è CakePHP?
CakePHP è un framework 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 completo di potenti strumenti che semplificano attività comuni di sviluppo 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 una ricca suite di strumenti di generazione del codice, aiutando gli sviluppatori a creare rapidamente strutture di codice comuni.
- ORM flessibile e potente: Il layer ORM (Object-Relational Mapping) integrato semplifica le operazioni con il database.
- Sicurezza: Funzionalità di sicurezza integrate come la validazione degli input, la protezione CSRF e la protezione contro l'iniezione SQL.
- Supporto della comunità: Comunità attiva ed ecosistema di plugin ricco.
- Documentazione completa: Fornisce documentazioni dettagliate e tutorial per aiutare gli sviluppatori a iniziare rapidamente.
CakePHP è adatto a progetti che vanno da applicazioni piccole a grandi sistemi aziendali, aiutando gli sviluppatori a costruire rapidamente applicazioni web di alta qualità.
Creazione e avvio di un progetto CakePHP utilizzando ServBay
In questo articolo, useremo l'ambiente PHP fornito da ServBay per creare e avviare un progetto CakePHP. Utilizzeremo la funzione "Host" di ServBay per configurare il server Web e configurare il progetto per l'accesso con semplici impostazioni.
::: attention Nota: se hai precedentemente utilizzato 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 viene fornito con Caddy preinstallato e configurato. Gli sviluppatori possono gestire i siti tramite la funzione "Host" di ServBay senza dover modificare manualmente i file di configurazione di Caddy.
Regole di riscrittura e .htaccess
In NGINX e Apache, gli sviluppatori solitamente scrivono le proprie regole di riscrittura e file .htaccess per gestire la riscrittura degli URL e altre configurazioni. Tuttavia, ServBay offre regole Caddy ottimizzate pronte all'uso, quindi a meno che non sia necessario, gli sviluppatori non devono scrivere queste regole.
Per ulteriori informazioni
Per ulteriori informazioni, consulta riscrittura e htaccess, come migrare un sito Apache a ServBay e come migrare un sito NGINX a ServBay.
:::
Creazione di un progetto CakePHP
TIP
ServBay raccomanda agli sviluppatori di posizionare i siti web nella directory /Applications/ServBay/www
per una gestione semplificata.
Installare Composer
ServBay ha Composer preinstallato, quindi non è necessaria una installazione separata.
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
Navigare nella directory del nuovo 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 di configurare correttamente le seguenti impostazioni: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
Configurazione del server Web
Utilizzare la funzione "Host" di ServBay per accedere al progetto CakePHP tramite il server Web. Aggiungere un nuovo host nelle impostazioni host di ServBay:
- Nome:
My First CakePHP Dev Site
- Dominio:
servbay-cakephp-test.local
- Tipo di sito:
PHP
- Versione di PHP: Selezionare
8.3
- Directory radice del sito:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Per i passaggi di configurazione dettagliati, consulta aggiungere il tuo primo sito web.
Aggiungere codice di esempio
Aggiungere il seguente codice nel file config/routes.php
per mostrare "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
Accesso al sito web
Aprire il browser e accedere a https://servbay-cakephp-test.local
, vedrete la pagina che mostra Hello ServBay!
.
Utilizzo di database NoSQL
Esempio con Memcached
Installare l'estensione Memcached
L'estensione Memcached è preinstallata in ServBay, quindi non è necessaria un'installazione aggiuntiva.
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
Utilizzare 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
L'estensione Redis è preinstallata in ServBay, quindi non è necessaria un'installazione aggiuntiva.
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
Utilizzare 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 di database relazionali
Creare schema e file di migrazione del database
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 di migrazione di CakePHP per creare le tabelle 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 utenti
Aggiungere 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
8Aggiungere dati utente
Aggiungere i dati utente 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 utenti
Aggiungere 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
8Aggiungere dati utente
Aggiungere i dati utente 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
Seguendo i passaggi sopra descritti, sei riuscito a creare e avviare un progetto CakePHP, utilizzando le funzionalità di ServBay per gestire e accedere al tuo progetto, oltre a collegarti e interrogare vari database.