Phalcon プロジェクトの作成と実行
Phalconとは?
Phalconは、高性能なPHPフレームワークで、C拡張として実装されており、非常に高速な実行性能を提供します。MVC(モデル-ビュー-コントローラー)アーキテクチャを採用しており、開発者に迅速かつ柔軟な開発体験を提供しつつ、高性能を維持します。
Phalconの主な特徴と利点
- 高性能:PhalconはC拡張として実装されているため、卓越したパフォーマンスを提供します。
- 豊富な機能:ORM、テンプレートエンジン、ルーティング、キャッシュ、キューなど、多様な開発要件に応じた機能を提供します。
- 低メモリ消費:独自の実装方式により、Phalconの実行時のメモリ消費は非常に低いです。
- 使いやすさ:シンプルで直感的なAPIと明確なドキュメントを提供し、開発者が迅速に習熟できるようにします。
- モジュール設計:必要に応じて異なるコンポーネントを選択して使用できる、非常に柔軟な設計です。
Phalconは、高性能なWebアプリケーションやAPIを構築するための理想的な選択肢であり、小規模なアプリケーションから大規模な企業級システムまで、さまざまなプロジェクトに適用できます。
ServBayを使用してPhalconプロジェクトを作成して実行する
この記事では、ServBayが提供するPHP環境を使用して、Phalconプロジェクトを作成し実行する手順を紹介します。ServBayの「ホスト」機能を使用してWebサーバーを設定し、簡単な設定でプロジェクトにアクセスできるようにします。
注意:NGINXまたはApacheユーザーの方へ
ServBayはデフォルトでCaddyをWebサーバーとして使用します。NGINXまたはApacheからServBayに移行する場合、いくつかの重要な変更点に注意が必要です:
Caddyの設定
ServBayにはCaddyが組み込まれており、デフォルトの設定は最適化されてデバッグ済みです。開発者はServBayの「ホスト」機能を使ってサイトを管理するだけで、Caddyの設定ファイルを手動で変更する必要はありません。
Rewrite規則と.htaccess
NGINXやApacheでは、通常、開発者がRewrite規則や.htaccessファイルを自分で作成してURLリダイレクトやその他の設定を行います。しかし、ServBayには出荷時にCaddyの規則が既に設定されているため、特別な必要がない限り、自分でこれらの規則を作成する必要はありません。
詳細情報の参照
さらに詳しい情報は、Rewriteとhtaccess、ApacheサイトのServBayへの移行方法、NGINXサイトのServBayへの移行方法をご覧ください。
注意:Phalconモジュールの有効化
ServBayにはPhalconモジュールが組み込まれており、ユーザーはまずこれを有効化し、PHPを再起動する必要があります。ServBay内蔵のPhalconモジュールの有効化方法をご参照ください。
異なるバージョンのPhalconとDevTools
使用するPHPのバージョンに応じて、異なるPhalcon DevToolsのバージョンをインストールする必要があります:
- PHP 5.6、7.0、7.1:Phalcon 3.4.5
- 対応するPhalcon DevToolsバージョン:
3.4.x
- 対応するPhalcon DevToolsバージョン:
- PHP 7.2、7.3、7.4:Phalcon 4.1.2
- 対応するPhalcon DevToolsバージョン:
4.3.x
- 対応するPhalcon DevToolsバージョン:
- PHP 8.0、8.1、8.2、8.3、8.4:Phalcon 5.7.0
- 対応するPhalcon DevToolsバージョン:
5.0.x
(公式のDevToolsはPHP 8.xのサポートが弱いため、修正版の使用を推奨)
- 対応するPhalcon DevToolsバージョン:
Phalconプロジェクトの作成
TIP
ServBayは開発者がWebサイトを/Applications/ServBay/www
ディレクトリに配置することを推奨しています。これにより管理が容易になります。
Composerのインストール
ServBayにはComposerが事前にインストールされています、このため別途インストールの必要はありません。
プロジェクトディレクトリの作成
プロジェクトディレクトリを作成し、進入します:
bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Phalcon DevToolsのインストール
使用するPHPバージョンに応じて、対応する 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:
composer.json
ファイルを作成し、以下の内容を入力
{
"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
次に
composer update
Phalconプロジェクトの作成
Phalcon DevTools を使用して新しい Phalcon プロジェクトを作成します:
bashvendor/bin/phalcon project servbay-phalcon-app
1プロジェクトディレクトリへの移動
新しく作成されたPhalconプロジェクトディレクトリに移動します:
bashcd servbay-phalcon-app
1
初期設定
環境変数の設定
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
9
Webサーバーの設定
ServBayの「ホスト」機能を使用して、PhalconプロジェクトにWebサーバー経由でアクセスするように設定します。ServBayの「ホスト」設定に新しいホストを追加します:
- 名前:
My First Phalcon Dev Site
- ドメイン名:
servbay-phalcon-test.local
- Webサイトの種類:
PHP
- PHPバージョン:使用するPHPバージョンを選択
- Webサイトのルートディレクトリ:
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
詳細な設定手順は最初のWebサイト追加をご覧ください。
サンプルコードの追加
app/config/routes.php
ファイルに以下のコードを追加して、「Hello ServBay!」を出力します:
$router->add(
'/',
[
'controller' => 'index',
'action' => 'index',
]
);
2
3
4
5
6
7
app/controllers/IndexController.php
ファイルに以下のコードを追加します:
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
Webサイトへのアクセス
ブラウザを開き、https://servbay-phalcon-test.local
にアクセスすると、「Hello ServBay!」と表示されるページが表示されます。
NoSQLデータベースの例
Memcachedの例
Memcached拡張のインストール
ServBayでは、Memcached拡張が既にプリインストールされているため、追加のインストールは不要です。
Memcachedの設定
app/config/config.php
ファイルにMemcached接続情報を追加します: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
14ルーティングの設定
app/config/routes.php
ファイルに以下のコードを追加します:php$router->add( '/memcached', [ 'controller' => 'index', 'action' => 'memcached', ] );
1
2
3
4
5
6
7Memcachedの使用
コントローラーでキャッシュを使用します:
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ブラウザを開き、
https://servbay-phalcon-test.local/memcached
にアクセスします
Redisの例
Redis拡張のインストール
ServBayでは、Redis拡張が既にプリインストールされているため、追加のインストールは不要です。
Redisの設定
app/config/config.php
ファイルにRedis接続情報を追加します: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
14ルーティングの設定
app/config/routes.php
ファイルに以下のコードを追加します:php$router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] );
1
2
3
4
5
6
7Redisの使用
コントローラーでキャッシュを使用します:
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ブラウザを開き、
https://servbay-phalcon-test.local/redis