Créer et exécuter un projet Phalcon
Qu'est-ce que Phalcon ?
Phalcon est un framework PHP haute performance, implémenté sous forme d'extension C, offrant une efficacité d'exécution exceptionnelle. Il adopte l'architecture MVC (Modèle-Vue-Contrôleur), visant à fournir une expérience de développement rapide et flexible aux développeurs, tout en maintenant de hautes performances.
Principales caractéristiques et avantages de Phalcon
- Haute performance: Étant donné que Phalcon est implémenté sous forme d'extension C, il offre des performances exceptionnelles.
- Fonctionnalités riches: Comprend des fonctionnalités telles que ORM, moteur de templates, routage, cache, files d'attente, etc., répondant à divers besoins de développement.
- Faible consommation de mémoire: En raison de sa méthode d’implémentation unique, Phalcon consomme très peu de mémoire lors de l’exécution.
- Facile à utiliser: Fournit une API simple et une documentation claire, aidant les développeurs à démarrer rapidement.
- Conception modulaire: Permet de choisir et d'utiliser différents composants selon les besoins, offrant une grande flexibilité.
Phalcon est un choix idéal pour construire des applications Web et des API haute performance, adaptées à des projets allant des petites applications aux systèmes d'entreprise de grande envergure.
Créer et exécuter un projet Phalcon avec ServBay
Dans cet article, nous allons utiliser l'environnement PHP fourni par ServBay pour créer et exécuter un projet Phalcon. Nous allons utiliser la fonctionnalité 'Hôte' de ServBay pour configurer le serveur Web et réaliser l'accès au projet par une configuration simple.
Attention : si vous avez déjà utilisé NGINX ou Apache
ServBay utilise par défaut Caddy comme serveur Web. Pour les utilisateurs migrent de NGINX et Apache vers ServBay, il y a quelques points de changement clé à noter :
Configuration de Caddy
ServBay a intégré Caddy et la configuration par défaut est déjà optimisée et débuguée. Les développeurs doivent seulement gérer les sites via la fonctionnalité 'Hôte' de ServBay, sans besoin de modifier les fichiers de configuration de Caddy manuellement.
Règles de réécriture et .htaccess
Avec NGINX et Apache, les développeurs doivent souvent écrire eux-mêmes les règles de réécriture et les fichiers .htaccess pour traiter la réécriture des URL et d'autres configurations. Cependant, les règles de Caddy sont déjà configurées lors de l’installation de ServBay et il n’est pas nécessaire de les écrire soi-même, sauf en cas de besoins spécifiques.
En savoir plus
Pour plus d'informations, veuillez consulter Réécriture et htaccess, Comment migrer un site Apache vers ServBay, Comment migrer un site NGINX vers ServBay.
Attention : activer le module Phalcon
ServBay a intégré le module Phalcon, mais l’utilisateur doit l’activer et redémarrer PHP. Veuillez consulter Comment activer le module Phalcon intégré de ServBay pour activer le module Phalcon.
Différentes versions de Phalcon et DevTools
Selon la version de PHP, différentes versions de Phalcon DevTools doivent être installées :
- PHP 5.6, 7.0, 7.1 : Phalcon 3.4.5
- Version correspondante de Phalcon DevTools :
3.4.x
- Version correspondante de Phalcon DevTools :
- PHP 7.2, 7.3, 7.4 : Phalcon 4.1.2
- Version correspondante de Phalcon DevTools :
4.3.x
- Version correspondante de Phalcon DevTools :
- PHP 8.0, 8.1, 8.2, 8.3, 8.4 : Phalcon 5.7.0
- Version correspondante de Phalcon DevTools :
5.0.x
(en raison du faible support officiel de DevTools pour PHP 8.x, il est recommandé d’utiliser la version corrigée)
- Version correspondante de Phalcon DevTools :
Créer un projet Phalcon
TIP
ServBay recommande de placer les sites Web dans le répertoire /Applications/ServBay/www
pour une gestion plus facile.
Installer Composer
ServBay est fourni avec Composer déjà installé, il n'est donc pas nécessaire de l'installer séparément.
Créer le répertoire du projet
Créez le répertoire du projet et accédez-y :
bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Installer Phalcon DevTools
Installez la version correspondante de Phalcon DevTools selon la version de PHP :
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 :
Créez le fichier
composer.json
et ajoutez-y le contenu suivant :
{
"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
}
2
3
4
5
6
7
8
9
10
11
12
13
Puis exécutez
composer update
Créer un projet Phalcon
Utilisez Phalcon DevTools pour créer un nouveau projet Phalcon :
bashvendor/bin/phalcon project servbay-phalcon-app
1Accéder au répertoire du projet
Accédez au répertoire du projet Phalcon nouvellement créé :
bashcd servbay-phalcon-app
1
Configuration initiale
Configurer les variables d'environnement
Dans le fichier
app/config/config.php
, configurez les informations de connexion à la base de données et autres variables d'environnement. Assurez-vous que la configuration suivante est correctement définie :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
Configurer le serveur Web
Utilisez la fonctionnalité 'Hôte' de ServBay pour accéder au projet Phalcon via le serveur Web. Dans les paramètres 'Hôte' de ServBay, ajoutez un nouvel hôte :
- Nom:
My First Phalcon Dev Site
- Domaine:
servbay-phalcon-test.local
- Type de site Web:
PHP
- Version de PHP: sélectionnez la version de PHP correspondante
- Répertoire racine du site Web:
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
Pour plus de détails sur les étapes de configuration, veuillez consulter Ajouter un premier site Web.
Ajouter un code d'exemple
Dans le fichier app/config/routes.php
, ajoutez le code suivant pour afficher "Hello ServBay!":
$router->add(
'/',
[
'controller' => 'index',
'action' => 'index',
]
);
2
3
4
5
6
7
Dans le fichier app/controllers/IndexController.php
, ajoutez le code suivant :
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
Accéder au site Web
Ouvrez le navigateur et accédez à https://servbay-phalcon-test.local
, vous verrez la page afficher Hello ServBay!
.
Exemple de base de données NoSQL
Exemple Memcached
Installer l'extension Memcached
Dans ServBay, l'extension Memcached est déjà pré-installée, pas besoin d'installation supplémentaire.
Configurer Memcached
Ajoutez les informations de connexion Memcached dans le fichier
app/config/config.php
: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
14Configurer les routes
Ajoutez le code suivant dans le fichier
app/config/routes.php
:php$router->add( '/memcached', [ 'controller' => 'index', 'action' => 'memcached', ] );
1
2
3
4
5
6
7Utiliser Memcached
Utilisez le cache dans le contrôleur :
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
30Ouvrez le navigateur et accédez à
https://servbay-phalcon-test.local/memcached
Exemple Redis
Installer l'extension Redis
Dans ServBay, l'extension Redis est déjà pré-installée, pas besoin d'installation supplémentaire.
Configurer Redis
Ajoutez les informations de connexion Redis dans le fichier
app/config/config.php
: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
14Configurer les routes
Ajoutez le code suivant dans le fichier
app/config/routes.php
:php$router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] );
1
2
3
4
5
6
7Utiliser Redis
Utilisez le cache dans le contrôleur :
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
30Ouvrez le navigateur et accédez à
https://servbay-phalcon-test.local/redis
Exemple de base de données relationnelle
Création de la structure de la base de données et des fichiers de migration
Créer un fichier de migration
Utiliser Phalcon DevTools pour créer un fichier de migration :
bashvendor/bin/phalcon migration generate --directory=servbay-phalcon-app
1Modifier le fichier de migration
Dans le répertoire
migrations
, créez un nouveau fichier de migration et éditez-le pour définir la structure de la table de la base de données :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
44Exécuter la migration
Utiliser la commande Phalcon DevTools pour exécuter la migration et créer la table de la base de données :
bashvendor/bin/phalcon migration run --directory=servbay-phalcon-app
1
Exemple MySQL
Configurer MySQL
Ajoutez les informations de connexion MySQL dans le fichier
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
9Configurer les routes
Ajoutez le code suivant dans le fichier
app/config/routes.php
: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
15Lire et écrire des données utilisateurs
Utilisez les fichiers suivants pour écrire et lire des données utilisateurs :
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 ? 'Utilisateur ajouté' : 'Échec de l'ajout de l'utilisateur'; } 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
39Ouvrez le navigateur et accédez à
https://servbay-phalcon-test.local/mysql-add
ethttps://servbay-phalcon-test.local/mysql
Exemple PostgreSQL
Configurer PostgreSQL
Ajoutez les informations de connexion PostgreSQL dans le fichier
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
9Configurer les routes
Ajoutez le code suivant dans le fichier
app/config/routes.php
: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
15Lire et écrire des données utilisateurs
Utilisez les fichiers suivants pour écrire et lire des données utilisateurs :
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Postgresql; class IndexController extends Controller { public function pgsqlAddAction() { $connection = new Postgresql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $success =
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17