Erstellen und Ausführen eines CakePHP-Projekts
Was ist CakePHP?
CakePHP ist ein Open-Source-PHP-Webframework, das Entwicklern dabei hilft, Webanwendungen schnell zu erstellen. Es basiert auf der MVC (Model-View-Controller)-Architektur und bietet eine leistungsstarke Reihe von Tools, die häufige Entwicklungsaufgaben wie Datenbankinteraktionen, Formular-Handling, Authentifizierung und Sitzungsverwaltung vereinfachen.
Wichtige Funktionen und Vorteile von CakePHP
- Schnelle Entwicklung: Bietet reichhaltige Codegenerierungstools, die Entwicklern helfen, schnell gängige Code-Strukturen zu erzeugen.
- Flexibles und leistungsstarkes ORM: Die eingebaute ORM (Object-Relational Mapping)-Schicht vereinfacht Datenbankoperationen.
- Sicherheit: Eingebaute Sicherheitsfunktionen wie Eingabevalidierung, CSRF-Schutz und SQL-Injection-Prävention.
- Community-Unterstützung: Aktive Community und ein reichhaltiges Plugin-Ökosystem.
- Gute Dokumentation: Bietet umfassende Dokumentation und Tutorials, um Entwicklern den Einstieg zu erleichtern.
CakePHP ist für Projekte geeignet, die von kleinen Anwendungen bis hin zu großen Unternehmenssystemen reichen und Entwicklern helfen, schnell hochwertige Webanwendungen zu erstellen.
Erstellen und Ausführen eines CakePHP-Projekts mit ServBay
In diesem Artikel nutzen wir die von ServBay bereitgestellte PHP-Umgebung, um ein CakePHP-Projekt zu erstellen und auszuführen. Wir verwenden die "Host"-Funktion von ServBay, um einen Webserver einzurichten und das Projekt mit einfachen Einstellungen zugänglich zu machen.
Hinweis: Wenn Sie zuvor NGINX oder Apache verwendet haben
ServBay verwendet standardmäßig Caddy als Webserver. Es gibt einige wesentliche Änderungen, die Benutzer, die von NGINX und Apache zu ServBay wechseln, beachten sollten:
Caddy-Konfiguration
ServBay wird mit vorinstalliertem und vorkonfiguriertem Caddy geliefert. Entwickler müssen nur die Sites über die "Host"-Funktion von ServBay verwalten, ohne die Caddy-Konfigurationsdatei manuell bearbeiten zu müssen.
Rewrite-Regeln und .htaccess
In NGINX und Apache schreiben Entwickler in der Regel ihre eigenen Rewrite-Regeln und .htaccess-Dateien, um URL-Umschreibungen und andere Konfigurationen zu handhaben. ServBay bietet jedoch bereits optimierte Caddy-Regeln out-of-the-box, sodass Entwickler diese Regeln nur schreiben müssen, wenn spezielle Anforderungen bestehen.
Mehr erfahren
Für weitere Informationen siehe Rewrite und htaccess, Website von Apache zu ServBay migrieren und Website von NGINX zu ServBay migrieren.
Erstellen eines CakePHP-Projekts
TIP
ServBay empfiehlt, dass Entwickler ihre Websites im Verzeichnis /Applications/ServBay/www
platzieren, um die Verwaltung zu erleichtern.
Installieren von Composer
ServBay wird mit vorinstalliertem Composer geliefert, sodass keine separate Installation erforderlich ist.
Erstellen eines CakePHP-Projekts
Verwenden Sie Composer, um ein neues CakePHP-Projekt zu 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
Navigieren Sie zum neu erstellten CakePHP-Projektverzeichnis:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Erstkonfiguration
Konfigurationsumgebungsvariablen
Konfigurieren Sie die Datenbankverbindungsinformationen und andere Umgebungsvariablen in der Datei
config/app_local.php
. Stellen Sie sicher, dass die folgenden Einstellungen korrekt festgelegt 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
Konfiguration des Webservers
Verwenden Sie die "Host"-Funktion von ServBay, um auf das CakePHP-Projekt über den Webserver zuzugreifen. Fügen Sie in den Host-Einstellungen von ServBay einen neuen Host hinzu:
- Name:
Meine erste CakePHP-Entwicklungsseite
- Domain:
servbay-cakephp-test.local
- Website-Typ:
PHP
- PHP-Version: Wählen Sie
8.3
- Website-Root-Verzeichnis:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Für detaillierte Einrichtungsschritte siehe Hinzufügen Ihrer ersten Website.
Beispielcode hinzufügen
Fügen Sie den folgenden Code zur Datei config/routes.php
hinzu, um "Hello ServBay!" auszugeben:
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Fügen Sie den folgenden Code zur Datei src/Controller/PagesController.php
hinzu:
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
Webseite aufrufen
Öffnen Sie einen Browser und besuchen Sie https://servbay-cakephp-test.local
, um die Seite mit der Ausgabe Hello ServBay!
zu sehen.
Beispiel mit NoSQL-Datenbanken
Memcached-Beispiel
Memcached-Erweiterung installieren
Die Memcached-Erweiterung ist in ServBay bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Memcached konfigurieren
Konfigurieren Sie die Memcached-Verbindungsinformationen in der Datei
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Routen konfigurieren
Fügen Sie den folgenden Code zur Datei
config/routes.php
hinzu:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Verwenden von Memcached
Verwenden Sie den Cache im 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
17Öffnen Sie einen Browser und besuchen Sie
https://servbay-cakephp-test.local/memcached
Redis-Beispiel
Redis-Erweiterung installieren
Die Redis-Erweiterung ist in ServBay bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Redis konfigurieren
Konfigurieren Sie die Redis-Verbindungsinformationen in der Datei
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
7Routen konfigurieren
Fügen Sie den folgenden Code zur Datei
config/routes.php
hinzu:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Verwenden von Redis
Verwenden Sie den Cache im 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
17Öffnen Sie einen Browser und besuchen Sie
https://servbay-cakephp-test.local/redis
Beispiel für relationale Datenbanken
Erstellen des Datenbankschemas und der Migrationsdateien
Erstellen von Migrationsdateien
Verwenden Sie das Bake-Tool von CakePHP, um Migrationsdateien zu erstellen:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Migration ausführen
Verwenden Sie CakePHP-Befehle, um Migrationen auszuführen und Datenbanktabellen zu erstellen:
bashbin/cake migrations migrate
1
MySQL-Beispiel
MySQL konfigurieren
Konfigurieren Sie die MySQL-Verbindungsinformationen in der Datei
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
9Routen konfigurieren
Fügen Sie den folgenden Code zur Datei
config/routes.php
hinzu:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Benutzertabelle hinzufügen
Fügen Sie den folgenden Code zur Datei
src/Model/Table/UsersTable.php
hinzu:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Benutzerdaten hinzufügen
Fügen Sie Benutzerdaten im Controller hinzu:
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Öffnen Sie einen Browser und besuchen Sie
https://servbay-cakephp-test.local/mysql-add
undhttps://servbay-cakephp-test.local/mysql
PostgreSQL-Beispiel
PostgreSQL konfigurieren
Konfigurieren Sie die PostgreSQL-Verbindungsinformationen in der Datei
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
10Routen konfigurieren
Fügen Sie den folgenden Code zur Datei
config/routes.php
hinzu:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Benutzertabelle hinzufügen
Fügen Sie den folgenden Code zur Datei
src/Model/Table/UsersTable.php
hinzu:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Benutzerdaten hinzufügen
Fügen Sie Benutzerdaten im Controller hinzu:
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Öffnen Sie einen Browser und besuchen Sie
https://servbay-cakephp-test.local/pgsql-add
undhttps://servbay-cakephp-test.local/pgsql
Durch die obigen Schritte haben Sie erfolgreich ein CakePHP-Projekt erstellt und ausgeführt, die Funktionen von ServBay zur Verwaltung und zum Zugriff auf Ihr Projekt genutzt sowie verschiedene Datenbanken verbunden und abgefragt.