Erstellen und Ausführen eines Phalcon-Projekts
Was ist Phalcon?
Phalcon ist ein leistungsfähiges PHP-Framework, das als C-Erweiterung implementiert wird und eine hohe Ausführungseffizienz bietet. Es verwendet das MVC-Architekturmodell (Model-View-Controller), um Entwicklern eine schnelle und flexible Entwicklungserfahrung zu bieten und gleichzeitig hohe Leistung zu gewährleisten.
Hauptmerkmale und Vorteile von Phalcon
- Hohe Leistung: Da Phalcon als C-Erweiterung implementiert ist, bietet es außergewöhnliche Leistung.
- Reichhaltige Funktionen: Umfasst ORM, Template-Engine, Routing, Caching, Queuing und weitere Funktionen, die verschiedenen Entwicklungsanforderungen gerecht werden.
- Niedriger Speicherverbrauch: Aufgrund seiner einzigartigen Implementierungsweise ist der Speicherverbrauch zur Laufzeit sehr gering.
- Benutzerfreundlich: Bietet eine einfache und benutzerfreundliche API und klare Dokumentation, die Entwicklern hilft, schnell einzusteigen.
- Modulares Design: Komponenten können je nach Bedarf ausgewählt und verwendet werden, was eine hohe Flexibilität bietet.
Phalcon ist die ideale Wahl für den Aufbau leistungsstarker Webanwendungen und APIs und eignet sich für Projekte aller Größen, von kleinen Anwendungen bis hin zu großen unternehmensweiten Systemen.
Erstellen und Ausführen eines Phalcon-Projekts mit ServBay
In diesem Artikel verwenden wir die von ServBay bereitgestellte PHP-Umgebung, um ein Phalcon-Projekt zu erstellen und auszuführen. Wir nutzen die 'Host'-Funktion von ServBay, um den Webserver einzurichten und durch einfache Konfiguration das Projekt zuzugreifen.
Hinweis: Wenn du ein ehemaliger NGINX- oder Apache-Benutzer bist
ServBay verwendet standardmäßig Caddy als Webserver. Für Benutzer, die von NGINX und Apache zu ServBay wechseln, gibt es einige wichtige Änderungen, die beachtet werden müssen:
Caddy-Konfiguration
ServBay hat Caddy bereits eingebaut und die Standardkonfiguration ist optimiert und debugged. Entwickler müssen lediglich die 'Host'-Funktion von ServBay verwenden, um die Website zu verwalten, ohne die Caddy-Konfigurationsdatei manuell zu ändern.
Rewrite-Regeln und .htaccess
In NGINX und Apache müssen Entwickler in der Regel Rewrite-Regeln und .htaccess-Dateien selbst schreiben, um URL-Rewrites und andere Konfigurationen zu behandeln. Bei ServBay sind die Caddy-Regeln bereits vorkonfiguriert, sodass Entwickler in der Regel keine zusätzlichen Regeln schreiben müssen, es sei denn, es gibt spezielle Anforderungen.
Weitere Informationen
Weitere relevante Informationen finden Sie unter Rewrite und htaccess, Website-Migration von Apache zu ServBay, Website-Migration von NGINX zu ServBay.
Hinweis: Aktivieren des Phalcon-Moduls
ServBay hat das Phalcon-Modul bereits integriert. Die Benutzer müssen es lediglich aktivieren und PHP neu starten. Bitte lesen Sie den Artikel Wie aktiviere ich das Phalcon-Modul in ServBay, um das Modul zu aktivieren.
Unterschiedliche Versionen von Phalcon und DevTools
Je nach PHP-Version müssen unterschiedliche Versionen von Phalcon DevTools installiert werden:
- PHP 5.6, 7.0, 7.1: Phalcon 3.4.5
- Entsprechende Version der Phalcon DevTools:
3.4.x
- Entsprechende Version der Phalcon DevTools:
- PHP 7.2, 7.3, 7.4: Phalcon 4.1.2
- Entsprechende Version der Phalcon DevTools:
4.3.x
- Entsprechende Version der Phalcon DevTools:
- PHP 8.0, 8.1, 8.2, 8.3, 8.4: Phalcon 5.7.0
- Entsprechende Version der Phalcon DevTools:
5.0.x
(Da die offiziellen DevTools PHP 8.x nicht gut unterstützen, wird die Verwendung der fixierten Version empfohlen.)
- Entsprechende Version der Phalcon DevTools:
Erstellen eines Phalcon-Projekts
TIP
ServBay empfiehlt Entwicklern, ihre Websites im Verzeichnis /Applications/ServBay/www
abzulegen, um die Verwaltung zu erleichtern.
Installation von Composer
ServBay liefert bereits Composer mit, daher ist keine separate Installation erforderlich.
Erstellen des Projektverzeichnisses
Erstellen Sie das Projektverzeichnis und wechseln Sie darauf:
bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Installation der Phalcon DevTools
Installieren Sie je nach PHP-Version die entsprechenden Phalcon DevTools:
PHP 5.6, 7.0, 7.1:
bashcomposer require phalcon/devtools:"^3.4"
1PHP 7.2, 7.3, 7.4:
bashcomposer require phalcon/devtools:"~4.1"
1PHP 8.0, 8.1, 8.2, 8.3, 8.4:
Erstellen Sie eine
composer.json
-Datei und fügen Sie den folgenden Inhalt ein:json1
{ "repositories": [ { "url": "https://github.com/daleffe/phalcon-devtools-5.x-fixed.git", "type": "git" } ], "require": { "phalcon/devtools": "dev-master" }, "minimum-stability": "dev", "prefer-stable": true }
Führen Sie dann den Befehl aus:
```bash
composer update
2
3
4
Erstellen eines Phalcon-Projekts
Erstellen Sie ein neues Phalcon-Projekt mit den Phalcon DevTools:
bashvendor/bin/phalcon project servbay-phalcon-app
1Wechseln in das Projektverzeichnis
Wechseln Sie in das neu erstellte Phalcon-Projektverzeichnis:
bashcd servbay-phalcon-app
1
Initialisierung der Konfiguration
Konfiguration von Umgebungsvariablen
Konfigurieren Sie im
app/config/config.php
Datei die Datenbankverbindungsinformationen und andere Umgebungsvariablen. Stellen Sie sicher, dass die folgenden Konfigurationen korrekt eingestellt sind:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9
Konfiguration des Webservers
Verwenden Sie die 'Host'-Funktion von ServBay, um über den Webserver auf das Phalcon-Projekt zuzugreifen. Fügen Sie in den 'Host'-Einstellungen von ServBay einen neuen Host hinzu:
- Name:
My First Phalcon Dev Site
- Domain:
servbay-phalcon-test.local
- Website-Typ:
PHP
- PHP-Version: Wählen Sie die entsprechende PHP-Version
- Webroot-Verzeichnis:
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
Detaillierte Schritte finden Sie unter Hinzufügen der ersten Website.
Hinzufügen von Beispielcode
Fügen Sie die folgende Route in die app/config/routes.php
Datei ein, um "Hello ServBay!" auszugeben:
$router->add(
'/',
[
'controller' => 'index',
'action' => 'index',
]
);
2
3
4
5
6
7
Fügen Sie den folgenden Code in die Datei app/controllers/IndexController.php
ein:
namespace App\Controllers;
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
echo 'Hello ServBay!';
}
}
2
3
4
5
6
7
8
9
10
11
Zugriff auf die Website
Öffnen Sie den Browser und gehen Sie zu https://servbay-phalcon-test.local
, um die Seite mit der Ausgabe Hello ServBay!
zu sehen.
NoSQL-Datenbankbeispiele
Memcached-Beispiel
Installation der Memcached-Erweiterung
In ServBay ist die Memcached-Erweiterung bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Konfiguration von Memcached
Fügen Sie in der Datei
app/config/config.php
die Memcached-Verbindungsinformationen hinzu:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], 'cache' => [ 'adapter' => 'Memcached', 'host' => '127.0.0.1', 'port' => 11211, ], ]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14Routing-Konfiguration
Fügen Sie die folgende Route in die Datei
app/config/routes.php
ein:php$router->add( '/memcached', [ 'controller' => 'index', 'action' => 'memcached', ] );
1
2
3
4
5
6
7Verwendung von Memcached
Verwenden Sie im Controller das Caching:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Cache\Backend\Memcached; use Phalcon\Cache\Frontend\Data as FrontData; class IndexController extends Controller { public function memcachedAction() { $frontCache = new FrontData([ 'lifetime' => 86400 ]); $cache = new Memcached($frontCache, [ 'host' => '127.0.0.1', 'port' => 11211, ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Memcached!'; $cache->save($cacheKey, $cachedData); } echo $cachedData; } }
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
26
27
28
29
30Öffnen Sie den Browser und gehen Sie zu
https://servbay-phalcon-test.local/memcached
.
Redis-Beispiel
Installation der Redis-Erweiterung
In ServBay ist die Redis-Erweiterung bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Konfiguration von Redis
Fügen Sie in der Datei
app/config/config.php
die Redis-Verbindungsinformationen hinzu:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], 'cache' => [ 'adapter' => 'Redis', 'host' => '127.0.0.1', 'port' => 6379, ], ]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14Routing-Konfiguration
Fügen Sie die folgende Route in die Datei
app/config/routes.php
ein:php$router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] );
1
2
3
4
5
6
7Verwendung von Redis
Verwenden Sie im Controller das Caching:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Cache\Backend\Redis; use Phalcon\Cache\Frontend\Data as FrontData; class IndexController extends Controller { public function redisAction() { $frontCache = new FrontData([ 'lifetime' => 86400 ]); $cache = new Redis($frontCache, [ 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $cache->save($cacheKey, $cachedData); } echo $cachedData; } }
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
26
27
28
29
30Öffnen Sie den Browser und gehen Sie zu
https://servbay-phalcon-test.local/redis
.
Beispiel für relationale Datenbanken
Erstellen der Datenbankstruktur und Migrationsdateien
Erstellen von Migrationsdateien
Verwenden Sie die Phalcon DevTools, um Migrationsdateien zu erstellen:
bashvendor/bin/phalcon migration generate --directory=servbay-phalcon-app
1Bearbeiten von Migrationsdateien
Erstellen Sie im Verzeichnis
migrations
eine neue Migrationsdatei und bearbeiten Sie sie, um die Datenbanktabellenstruktur zu definieren:phpuse Phalcon\Db\Column; use Phalcon\Db\Index; use Phalcon\Migrations\Mvc\Model\Migration; class UsersMigration_100 extends Migration { public function morph() { $this->morphTable('users', [ 'columns' => [ new Column( 'id', [ 'type' => Column::TYPE_INTEGER, 'autoIncrement' => true, 'notNull' => true, 'primary' => true, ] ), new Column( 'name', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, ] ), new Column( 'email', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, 'unique' => true, ] ), ], 'indexes' => [ new Index('PRIMARY', ['id'], 'PRIMARY'), new Index('email_UNIQUE', ['email'], 'UNIQUE'), ], ]); } }
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44Durchführen der Migration
Verwenden Sie den folgenden Befehl, um die Migration durchzuführen und die Datenbanktabellen zu erstellen:
bashvendor/bin/phalcon migration run --directory=servbay-phalcon-app
1
MySQL-Beispiel
MySQL-Konfiguration
Konfigurieren Sie MySQL-Verbindungsinformationen in der Datei
app/config/config.php
:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9Routing-Konfiguration
Fügen Sie folgende Routen in die Datei
app/config/routes.php
ein:php$router->add( '/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ] ); $router->add( '/mysql', [ 'controller' => 'index', 'action' => 'mysql', ] );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Hinzufügen von Benutzerdaten
Schreiben Sie im Controller die Benutzerdaten:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; class IndexController extends Controller { public function mysqlAddAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $success = $connection->insert( 'users', ['ServBay', '[email protected]'], ['name', 'email'] ); echo $success ? 'Benutzer hinzugefügt' : 'Benutzer konnte nicht hinzugefügt werden'; } public function mysqlAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $users = $connection->fetchAll('SELECT * FROM users', \Phalcon\Db\Enum::FETCH_ASSOC); echo 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39Öffnen Sie den Browser und gehen Sie zu
https://servbay-phalcon-test.local/mysql-add
undhttps://servbay-phalcon-test.local/mysql
.
PostgreSQL-Beispiel
PostgreSQL-Konfiguration
Konfigurieren Sie PostgreSQL-Verbindungsinformationen in der Datei
app/config/config.php
:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Postgresql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9Routing-Konfiguration
Fügen Sie folgende Routen in die Datei
app/config/routes.php
ein:php$router->add( '/pgsql-add', [ 'controller' => 'index', 'action' => 'pgsqlAdd', ] ); $router->add( '/pgsql', [ 'controller' => 'index', 'action' => 'pgsql', ] );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Hinzufügen von Benutzerdaten
Schreiben Sie im Controller die Benutzerdaten:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Postgresql; class IndexController extends Controller { public function pgsqlAddAction() { $connection = new Postgresql([ 'host' =>
1
2
3
4
5
6
7
8
9
10
11