Zend Frameworkプロジェクトの作成と実行
Zend Frameworkとは?
Zend FrameworkはオープンソースのPHPフレームワークで、モダンなWebアプリケーションやサービスを構築するためのオブジェクト指向ライブラリのセットを提供します。モジュール化と高性能が特徴で、小規模から大規模なエンタープライズアプリケーションの構築に適しています。
Zend Frameworkの主要な特徴と利点
- モジュール化設計:Zend Frameworkはモジュール化設計を採用しており、必要に応じてコンポーネントを選択して使用できます。
- 高性能:最適化されたアーキテクチャとキャッシュメカニズムによって、優れたパフォーマンスを提供します。
- 柔軟性:多様なサードパーティライブラリや拡張機能を統合でき、あらゆる規模のプロジェクトに適用可能です。
- コミュニティサポート:大規模な開発者コミュニティと豊富なエコシステムを持っています。
- 充実したドキュメント:詳細なドキュメントとチュートリアルを提供し、開発者が迅速に習得できるよう支援します。
Zend Frameworkは高品質なWebアプリケーションとAPIの構築に適しており、小規模なアプリケーションから大規模エンタープライズシステムまでのあらゆるプロジェクトに適しています。
ServBayを使用してZend Frameworkプロジェクトを作成・実行
この記事では、ServBayが提供するPHP環境を使用してZend Frameworkプロジェクトを作成し、実行する手順を説明します。ServBayの「ホスト」機能を利用してWebサーバーを設定し、簡単な設定でプロジェクトにアクセスできるようにします。
注意:NGINXまたはApacheユーザーの場合
ServBayはデフォルトでCaddyをWebサーバーとして使用します。NGINXやApacheからServBayに移行するユーザーは、次の重要な変更点に注意が必要です:
Caddyの設定
ServBayにはCaddyが組み込まれており、デフォルト設定は最適化され、デバッグ済みです。開発者は手動でCaddyの設定ファイルを編集する必要はなく、ServBayの「ホスト」機能を通じてサイトを管理するだけで済みます。
Rewriteルールと.htaccess
NGINXやApacheでは、開発者はURLリライトやその他の設定を処理するためにRewriteルールや.htaccessファイルを自分で記述する必要がありました。しかし、ServBayではCaddyのルールが初期設定で構成されているため、特別な要件がない限り、これらのルールを自分で記述する必要はありません。
詳細情報
詳細については、リライトおよびhtaccess、ApacheサイトのServBayへの移行方法、NGINXサイトのServBayへの移行方法をご覧ください。
Zend Frameworkプロジェクトを作成する
TIP
ServBayは開発者がサイトを管理しやすいように、ウェブサイトを/Applications/ServBay/www
ディレクトリに配置することを推奨しています。
Composerのインストール
ServBayは出荷時にComposerを内蔵しているため、個別にインストールする必要はありません。
Zend Frameworkプロジェクトを作成
Composerを使用して新しいZend Frameworkプロジェクトを作成します:
bashcd /Applications/ServBay/www mkdir servbay-zend-app cd servbay-zend-app composer create-project zendframework/skeleton-application .
1
2
3
4プロジェクトディレクトリに入る
新しく作成したZend Frameworkプロジェクトディレクトリに入ります:
bashcd /Applications/ServBay/www/servbay-zend-app
1
初期設定
環境変数を設定
config/autoload/global.php
ファイルにデータベース接続情報やその他の環境変数を設定します。以下の設定が正しく設定されていることを確認します:phpreturn [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ], ];
1
2
3
4
5
6
7
8
9
Webサーバーを設定
ServBayの「ホスト」機能を使用して、Webサーバー経由でZend Frameworkプロジェクトにアクセスできるようにします。ServBayの「ホスト」設定で、新しいホストを追加します:
- 名前:
My First Zend Dev Site
- ドメイン:
servbay-zend-test.local
- ウェブサイトの種類:
PHP
- PHPバージョン:
8.3
を選択 - ウェブサイトのルートディレクトリ:
/Applications/ServBay/www/servbay-zend-app/public
詳細な設定手順については、最初のサイトの追加をご覧ください。
サンプルコードを追加
module/Application/config/module.config.php
ファイルに以下のコードを追加し、"Hello ServBay!"を出力します:
return [
'router' => [
'routes' => [
'home' => [
'type' => 'Literal',
'options' => [
'route' => '/',
'defaults' => [
'controller' => 'Application\Controller\Index',
'action' => 'index',
],
],
],
],
],
'controllers' => [
'factories' => [
'Application\Controller\Index' => InvokableFactory::class,
],
],
'view_manager' => [
'template_path_stack' => [
__DIR__ . '/../view',
],
],
];
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
module/Application/src/Controller/IndexController.php
ファイルに以下のコードを追加します:
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel([
'message' => 'Hello ServBay!',
]);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
module/Application/view/application/index/index.phtml
ファイルに以下のコードを追加します:
<?php echo $this->message; ?>
Webサイトにアクセス
ブラウザを開いてhttps://servbay-zend-test.local
にアクセスすると、Hello ServBay!
と表示されます。
NoSQLデータベースの例
Memcachedの例
Memcached拡張機能のインストール
ServBayにはMemcached拡張機能が事前にインストールされていますので、追加のインストールは不要です。
Memcachedの設定
composer.json
ファイルにMemcached依存関係を追加します:json{ "require": { "laminas/laminas-cache-storage-adapter-memcached": "^2.0" } }
1
2
3
4
5次に、依存関係をインストールするため
composer update
を実行します。ルートの設定
module/Application/config/module.config.php
ファイルに以下のコードを追加します:phpreturn [ 'router' => [ 'routes' => [ 'memcached' => [ 'type' => 'Literal', 'options' => [ 'route' => '/memcached', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'memcached', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Memcachedの使用
コントローラーでキャッシュを使用します:
phpnamespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; class IndexController extends AbstractActionController { public function memcachedAction() { $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'memcached', 'options' => [ 'servers' => [ ['127.0.0.1', 11211], ], ], ], ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Memcached!'; $cache->setItem($cacheKey, $cachedData); } return new ViewModel([ 'message' => $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
31
32
33
34module/Application/view/application/index/memcached.phtml
ファイルに以下のコードを追加します:php<?php echo $this->message; ?>
1ブラウザを開いて
https://servbay-zend-test.local/memcached
にアクセス
Redisの例
Redis拡張機能のインストール
ServBayにはRedis拡張機能が事前にインストールされていますので、追加のインストールは不要です。
Redisの設定
composer.json
ファイルにRedis依存関係を追加します:json{ "require": { "laminas/laminas-cache-storage-adapter-redis": "^2.0" } }
1
2
3
4
5次に、依存関係をインストールするため
composer update
を実行します。ルートの設定
module/Application/config/module.config.php
ファイルに以下のコードを追加します:phpreturn [ 'router' => [ 'routes' => [ 'redis' => [ 'type' => 'Literal', 'options' => [ 'route' => '/redis', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'redis', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Redisの使用
コントローラーでキャッシュを使用します:
phpnamespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; class IndexController extends AbstractActionController { public function redisAction() { $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'redis', 'options' => [ 'server' => [ 'host' => '127.0.0.1', 'port' => 6379, ], ], ], ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Redis!'; $cache->setItem($cacheKey, $cachedData); } return new ViewModel([ 'message' => $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
31
32
33
34
35module/Application/view/application/index/redis.phtml
ファイルに以下のコードを追加します:php<?php echo $this->message; ?>
1ブラウザを開いて
https://servbay-zend-test.local/redis
にアクセス
リレーショナルデータベースの例
データベース構造とマイグレーションファイルの作成
マイグレーションファイルの作成
LaminasのMigrationsツールを使用してマイグレーションファイルを作成します:
bashcomposer require laminas/laminas-db
1マイグレーションファイルの編集
data/migrations
ディレクトリに新しいマイグレーションファイルを作成し、データベーステーブル構造を定義するように編集します:phpuse Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; class CreateUsersTable { public function up(Adapter $adapter) { $sql = new Sql($adapter); $create = $sql->createTable('users') ->addColumn('id', 'integer', ['auto_increment' => true]) ->addColumn('name', 'varchar', ['length' => 255]) ->addColumn('email', 'varchar', ['length' => 255, 'unique' => true]) ->addPrimaryKey('id'); $adapter->query( $sql->buildSqlString($create), Adapter::QUERY_MODE_EXECUTE ); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20マイグレーションの実行
データベーステーブルを作成するため、マイグレーションを手動で実行します:
php$adapter = new Adapter([ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ]); $migration = new CreateUsersTable(); $migration->up($adapter);
1
2
3
4
5
6
7
8
9
10
MySQLの例
MySQLの設定
config/autoload/global.php
ファイルにMySQL接続情報を設定します:phpreturn [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ], ];
1
2
3
4
5
6
7
8
9ルートの設定
module/Application/config/module.config.php
ファイルに以下のコードを追加します:phpreturn [ 'router' => [ 'routes' => [ 'mysql-add' => [ 'type' => 'Literal', 'options' => [ 'route' => '/mysql-add', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'mysqlAdd', ], ], ], 'mysql' => [ 'type' => 'Literal', 'options' => [ 'route' => '/mysql', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'mysql', ], ], ], ], ], ];
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ユーザーデータの書き込み
コントローラーでユーザーデータを追加します:
phpnamespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { protected $adapter; public function __construct(Adapter $adapter) { $this->adapter = $adapter; } public function mysqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay', 'email' => '[email protected]', ]); $this->adapter->query( $sql->buildSqlString($insert), Adapter::QUERY_MODE_EXECUTE ); return new ViewModel([ 'message' => 'User added', ]); } public function mysqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $result = $this->adapter->query( $sql->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE ); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55module/Application/view/application/index/mysql-add.phtml
ファイルに以下のコードを追加します:php<?php echo $this->message; ?>
1module/Application/view/application/index/mysql.phtml
ファイルに以下のコードを追加します:php<?php echo $this->users; ?>
1ブラウザを開いて
https://servbay-zend-test.local/mysql-add
およびhttps://servbay-zend-test.local/mysql
にアクセス
PostgreSQLの例
PostgreSQLの設定
config/autoload/global.php
ファイルにPostgreSQL接続情報を設定します:phpreturn [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ], ];
1
2
3
4
5
6
7
8
9ルートの設定
module/Application/config/module.config.php
ファイルに以下のコードを追加します:phpreturn [ 'router' => [ 'routes' => [ 'pgsql-add' => [ 'type' => 'Literal', 'options' => [ 'route' => '/pgsql-add
1
2
3
4
5
6
7