Yii 2 プロジェクトの作成と実行
Yii 2 とは?
Yii 2 は、モダンなWebアプリケーションを開発するための高性能なPHPフレームワークです。MVC(Model-View-Controller)デザインパターンに従い、豊富な機能とツールセットを提供しており、開発者が高品質なWebアプリケーションを迅速に構築できるようにします。Yii 2 は効率的で柔軟性があり拡張可能であるため、多くの開発者にとっての選択肢となっています。
Yii 2 の主な特徴と利点
- 高性能:Yii 2 は高性能なフレームワークで、高い同時接続リクエストを処理できます。
- モジュール化:豊富なモジュールとプラグインを用意しており、機能の拡張とカスタマイズが容易です。
- セキュリティ:入力検証、出力フィルタリング、CSRF防御など、さまざまなセキュリティ機能が組み込まれています。
- 使いやすさ:シンプルで使いやすいAPIと豊富なドキュメントを提供しており、開発者がすぐに慣れることができます。
- 強力なコミュニティサポート:活発な開発者コミュニティと豊富なサードパーティ拡張機能を持っています。
Yii 2 は、開発者が迅速に高性能で高品質なWebアプリケーションを構築するのに役立ち、さまざまな規模のプロジェクトに適しています。
ServBay で Yii 2 プロジェクトの作成と実行
この記事では、ServBay が提供するPHP環境を使用してYii 2 プロジェクトを作成し実行します。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に移行する方法を参照してください。
Yii 2 プロジェクトの作成
TIP
ServBayでは、サイトを管理しやすくするために、サイトを/Applications/ServBay/www
ディレクトリに配置することを推奨しています。
Composer のインストール
ServBayは出荷時にComposerが同梱されているため、別途インストールする必要はありません。
Yii 2 プロジェクトの作成
Composerを使用して新しいYii 2ベースアプリケーションテンプレートプロジェクトを作成します:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app composer create-project --prefer-dist yiisoft/yii2-app-basic .
1
2
3
4プロジェクトディレクトリに移動
新しく作成したYii 2プロジェクトディレクトリに移動します:
bashcd /Applications/ServBay/www/servbay-yii2-app
1
初期設定
データベース接続の設定
config/db.php
ファイルでデータベース接続情報を設定します:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7キャッシュとRedisコンポーネントの設定
config/web.php
ファイルにキャッシュとRedisコンポーネントの設定を追加します:php'components' => [ 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], // ... ],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Webサーバーの設定
ServBay の「ホスト」機能を使用して、Webサーバー経由でYii 2 プロジェクトにアクセスします。ServBayの「ホスト」設定で新しいホストを追加します:
- 名前:
My First Yii 2 Dev Site
- ドメイン名:
servbay-yii2-test.local
- ウェブサイトタイプ:
PHP
- PHPバージョン:
8.3
を選択 - ウェブサイトルートディレクトリ:
/Applications/ServBay/www/servbay-yii2-app/web
詳細な設定手順は 最初のウェブサイトの追加 を参照してください。
サンプルコードの追加
controllers/SiteController.php
ファイルに以下のコードを追加します:
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
class SiteController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
public function actionMemcached()
{
$cache = Yii::$app->cache;
$cache->set('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $this->asText($value);
}
public function actionRedis()
{
$redis = Yii::$app->redis;
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $this->asText($value);
}
public function actionMysqlAdd()
{
Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay',
'email' => '[email protected]',
])->execute();
return $this->asText('User added');
}
public function actionMysql()
{
$users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll();
return $this->asJson($users);
}
}
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
views/site/index.php
ファイルに以下のコードを追加します:
<?php
/* @var $this yii\web\View */
$this->title = 'My Yii2 Application';
?>
<div class="site-index">
<div class="jumbotron">
<h1>おめでとうございます!</h1>
<p class="lead">Yii2アプリケーションを正常に作成しました。</p>
</div>
</div>
2
3
4
5
6
7
8
9
10
ウェブサイトへアクセス
ブラウザを開き、次のURLにアクセス:
https://servbay-yii2-test.local
:デフォルトのYii 2ウェルカムページが表示されます。
NoSQLデータベースの例
Memcached の例
Memcached エクステンションのインストール
ServBay にはMemcachedエクステンションがプリインストールされているため、追加のインストールは不要です。
Memcached の設定
config/web.php
ファイルでMemcached接続情報を設定します:php'components' => [ 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], // ... ],
1
2
3
4
5
6
7
8
9
10
11
12
13Memcached の使用
コントローラー内でキャッシュを使用します:
phppublic function actionMemcached() { $cache = Yii::$app->cache; $cache->set('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $this->asText($value); }
1
2
3
4
5
6
7
Redis の例
Redis エクステンションのインストール
ServBayにはRedisエクステンションがプリインストールされているため、追加のインストールは不要です。
Redis の設定
config/web.php
ファイルでRedis接続情報を設定します:php'components' => [ 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], // ... ],
1
2
3
4
5
6
7
8
9Redis の使用
コントローラー内でキャッシュを使用します:
phppublic function actionRedis() { $redis = Yii::$app->redis; $redis->set('key', 'Hello Redis!'); $value = $redis->get('key'); return $this->asText($value); }
1
2
3
4
5
6
7
リレーショナルデータベースの例
データベース構造とマイグレーションファイルの作成
マイグレーションファイルの作成
Yii 2 のGiiツールを使用してマイグレーションファイルを作成します:
bashphp yii migrate/create create_users_table
1マイグレーションファイルの編集
migrations
ディレクトリで新しく作成されたマイグレーションファイルを見つけ、データベーステーブル構造を定義するために編集:phppublic function up() { $this->createTable('users', [ 'id' => $this->primaryKey(), 'name' => $this->string()->notNull(), 'email' => $this->string()->notNull()->unique(), 'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'), 'updated_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ]); }
1
2
3
4
5
6
7
8
9
10マイグレーションの実行
Yii 2 のマイグレーションコマンドを使用して、マイグレーションを実行し、データベーステーブルを作成:
bashphp yii migrate
1
MySQL の例
MySQL の設定
config/db.php
ファイルでMySQL接続情報を設定します:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7ユーザーデータの書き込み
コントローラー内でユーザーデータを挿入します:
phppublic function actionMysqlAdd() { Yii::$app->db->createCommand()->insert('users', [ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->asText('User added'); }
1
2
3
4
5
6
7
8MySQL の使用
コントローラー内でデータベースを呼び出す:
phppublic function actionMysql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
PostgreSQL の例
PostgreSQL の設定
config/db.php
ファイルでPostgreSQL接続情報を設定します:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'pgsql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7ユーザーデータの書き込み
コントローラー内でユーザーデータを挿入します:
phppublic function actionPgsqlAdd() { Yii::$app->db->createCommand()->insert('users', [ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->asText('User added'); }
1
2
3
4
5
6
7
8PostgreSQL の使用
コントローラー内でデータベースを呼び出す:
phppublic function actionPgsql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
以上の手順を通じて、Yii 2 プロジェクトを作成して実行し、ServBay の機能を活用してプロジェクトを管理しアクセスすることができました。また、複数のデータベースに接続し、データを呼び出す方法も学びました。このガイドが、あなたがYii 2に慣れ、プロジェクトに適用するのに役立つことを願っています。