Erstellen und Ausführen eines CakePHP-Projekts
Was ist CakePHP?
CakePHP ist ein Open-Source-PHP-Web-Framework, das Entwicklern hilft, Webanwendungen schnell zu erstellen. Es basiert auf dem MVC (Model-View-Controller)-Architektur und bietet eine leistungsstarke Werkzeugpalette, die häufige Aufgaben wie Datenbankinteraktionen, Formularverarbeitung, Authentifizierung und Sitzungsverwaltung vereinfacht.
Hauptmerkmale und Vorteile von CakePHP
- Schnelle Entwicklung: Bietet eine Vielzahl von Code-Generierungstools, die Entwicklern helfen, häufig verwendete Code-Strukturen schnell zu erstellen.
- Flexibles und leistungsstarkes ORM: Das eingebaute ORM (Object-Relational Mapping) erleichtert Datenbankoperationen.
- Sicherheit: Bietet verschiedene Sicherheitsfunktionen wie Eingabevalidierung, CSRF-Schutz und SQL-Injection-Verhinderung.
- Community-Support: Hat eine aktive Community und ein reichhaltiges Plugin-Ökosystem.
- Gute Dokumentation: Bietet ausführliche Dokumentation und Tutorials, die Entwicklern helfen, schnell loszulegen.
CakePHP eignet sich für Projekte aller Größen, von kleinen Anwendungen bis hin zu großen Unternehmenssystemen, und hilft Entwicklern, qualitativ hochwertige Webanwendungen schnell zu erstellen.
Erstellen und Ausführen eines CakePHP-Projekts mit ServBay
In diesem Artikel verwenden wir die von ServBay bereitgestellte PHP-Umgebung, um ein CakePHP-Projekt zu erstellen und auszuführen. Wir nutzen die Host-Funktion von ServBay, um den Webserver einzurichten und das Projekt zugänglich zu machen.
Achtung: Wenn du zuvor NGINX oder Apache verwendet hast
ServBay verwendet standardmäßig Caddy als Webserver. Für Benutzer, die von NGINX und Apache zu ServBay wechseln, gibt es einige wichtige Änderungen zu beachten:
Caddy-Konfiguration
ServBay enthält bereits eine optimierte und getestete Caddy-Konfiguration. Entwickler müssen die Caddy-Konfigurationsdatei nicht manuell ändern, sondern können die Host-Funktion von ServBay verwenden, um Websites zu verwalten.
Rewrite-Regeln und .htaccess
In NGINX und Apache mussten Entwickler normalerweise eigene Rewrite-Regeln und .htaccess-Dateien schreiben, um URL-Umschreibungen und andere Konfigurationen zu verwalten. ServBay ist jedoch mit vorkonfigurierten Caddy-Regeln ausgestattet, sodass Entwickler diese Regeln nur bei speziellen Anforderungen selbst schreiben müssen.
Mehr erfahren
Weitere Informationen findest du unter Rewrite und .htaccess, Migrating Apache Websites to ServBay und Migrating NGINX Websites to ServBay.
Erstellen eines CakePHP-Projekts
TIP
ServBay empfiehlt Entwicklern, Websites im Verzeichnis/Applications/ServBay/www
zu platzieren, um die Verwaltung zu erleichtern.
Composer installieren
ServBay enthält bereits Composer, sodass keine separate Installation erforderlich ist.
CakePHP-Projekt erstellen
Ein neues CakePHP-Projekt mit Composer erstellen:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4In das Projektverzeichnis wechseln
In das neu erstellte CakePHP-Projektverzeichnis wechseln:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Initialkonfiguration
Umgebungsvariablen konfigurieren
Die Datenbankverbindungsinformationen und andere Umgebungsvariablen in der
config/app_local.php
-Datei konfigurieren. Sicherstellen, dass die folgenden Konfigurationen korrekt eingestellt sind: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
Webserver konfigurieren
Mit der Host-Funktion von ServBay auf das CakePHP-Projekt zugreifen. In den Host-Einstellungen von ServBay einen neuen Host hinzufügen:
- Name:
My First CakePHP Dev Site
- Domain:
servbay-cakephp-test.local
- Website-Typ:
PHP
- PHP-Version:
8.3
- Stammverzeichnis der Website:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Detaillierte Anweisungen dazu findest du unter Add a New Website.
Beispielcode hinzufügen
In der config/routes.php
-Datei den folgenden Code hinzufügen, um "Hello ServBay!" auszugeben:
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
In der src/Controller/PagesController.php
-Datei den folgenden Code hinzufügen:
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
Website aufrufen
Öffne den Browser und rufe https://servbay-cakephp-test.local
auf, um die Ausgabe Hello ServBay!
zu sehen.
NoSQL-Datenbankbeispiele
Memcached-Beispiel
Memcached-Erweiterung installieren
In ServBay ist die Memcached-Erweiterung bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Memcached konfigurieren
In der
config/app_local.php
-Datei die Memcached-Verbindungsinformationen eintragen:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Route konfigurieren
In der
config/routes.php
-Datei den folgenden Code hinzufügen:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Memcached verwenden
Im Controller Cache verwenden:
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
17Öffne den Browser und rufe
https://servbay-cakephp-test.local/memcached
auf.
Redis-Beispiel
Redis-Erweiterung installieren
In ServBay ist die Redis-Erweiterung bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Redis konfigurieren
In der
config/app_local.php
-Datei die Redis-Verbindungsinformationen eintragen:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Route konfigurieren
In der
config/routes.php
-Datei den folgenden Code hinzufügen:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Redis verwenden
Im Controller Cache verwenden:
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
17Öffne den Browser und rufe
https://servbay-cakephp-test.local/redis
auf.
Relationale Datenbankbeispiele
Datenbankstruktur und Migrationsdatei erstellen
Migrationsdatei erstellen
Mit dem Bake-Tool von CakePHP eine Migrationsdatei erstellen:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Migration ausführen
Mit dem CakePHP-Befehl die Migration ausführen, um die Datenbanktabelle zu erstellen:
bashbin/cake migrations migrate
1
MySQL-Beispiel
MySQL konfigurieren
In der
config/app_local.php
-Datei die MySQL-Verbindungsinformationen eintragen: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
9Route konfigurieren
In der
config/routes.php
-Datei den folgenden Code hinzufügen:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2User-Tabelle hinzufügen
Den folgenden Code in der Datei
src/Model/Table/UsersTable.php
speichern:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Benutzerdaten schreiben
Im Controller Benutzerdaten schreiben:
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
25Öffne den Browser und rufe
https://servbay-cakephp-test.local/mysql-add
undhttps://servbay-cakephp-test.local/mysql
auf.
PostgreSQL-Beispiel
PostgreSQL konfigurieren
In der
config/app_local.php
-Datei die PostgreSQL-Verbindungsinformationen eintragen: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
10Route konfigurieren
In der
config/routes.php
-Datei den folgenden Code hinzufügen:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2User-Tabelle hinzufügen
Den folgenden Code in der Datei
src/Model/Table/UsersTable.php
speichern:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Benutzerdaten schreiben
Im Controller Benutzerdaten schreiben:
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
25Öffne den Browser und rufe
https://servbay-cakephp-test.local/pgsql-add
undhttps://servbay-cakephp-test.local/pgsql
auf.
Durch die obigen Schritte hast du erfolgreich ein CakePHP-Projekt erstellt und ausgeführt sowie die von ServBay bereitgestellten Funktionen verwendet, um dein Projekt zu verwalten und zugänglich zu machen, während du gleichzeitig mehrere Datenbanken verbunden und Daten abgerufen hast.