ThinkPHP 8 プロジェクトの作成と実行
ThinkPHP とは?
ThinkPHP は、中国の PHP 開発者によって作られたオープンソースの PHP Web フレームワークです。モダンな Web アプリケーションの構築を支援する簡潔で効率的なツールセットを提供します。ThinkPHP は、ルーティング、セッション、キャッシュ、認証などの豊富な機能を提供し、一般的な Web 開発タスクを簡素化します。
ThinkPHP の主な特徴と利点
- 簡潔と効率:ThinkPHP の構文はシンプルかつ効率的で、コードが読みやすく、メンテナンスしやすいです。
- 豊富な機能セット:ルーティング、認証、セッション管理、キャッシュなどを含む機能を提供し、開発作業を大幅に簡素化します。
- 強力な ORM:ThinkPHP は強力なデータベース操作機能を提供し、データベース操作を簡便にします。
- モジュラー設計:Composer パッケージマネージャを通じて、サードパーティのライブラリや拡張を簡単に統合できます。
- 強力なコミュニティサポート:大規模な開発者コミュニティと豊富なエコシステムがあります。
ThinkPHP は、開発者が高品質な Web アプリケーションや API を迅速に作成するのを支援し、小規模なアプリケーションから大規模企業システムまで、さまざまなプロジェクトに適しています。
ServBay を使用して ThinkPHP 8 プロジェクトを作成して実行する
この記事では、ServBay が提供する PHP 環境を使用して ThinkPHP 8 プロジェクトを作成し、実行します。ServBay の「ホスト」機能を利用して Web サーバを設定し、簡単な設定でプロジェクトにアクセスできるようにします。
注意:NGINX または Apache のユーザーであった場合
ServBay はデフォルトで Caddy を Web サーバとして使用します。NGINX および Apache から ServBay へ移行するユーザーのために、いくつかの重要な変更点に注意が必要です:
Caddy の設定
ServBay には Caddy が組み込まれており、デフォルト設定が最適化されて調整されています。開発者は ServBay の「ホスト」機能を使用してサイトを管理するだけで、Caddy 設定ファイルを手動で修正する必要はありません。
Rewrite ルールと .htaccess
NGINX および Apache では、URL 書き換えやその他の設定を処理するために Rewrite ルールや .htaccess ファイルを自分で書く必要がありましたが、ServBay は出荷時に Caddy のルールを既に設定しているため、特別な要件がない限り、これらのルールを書く必要はありません。
詳細情報の確認
詳細については、Rewriteとhtaccess、ApacheサイトのServBayへの移行方法、NGINXサイトのServBayへの移行方法を参照してください。
ThinkPHP プロジェクトを作成する
TIP
ServBay は開発者がウェブサイトを/Applications/ServBay/www
ディレクトリに配置することを推奨しています。管理が容易になります。
Composer のインストール
ServBay はComposer をプリインストールしていますので、別途インストールする必要はありません。
ThinkPHP プロジェクトの作成
Composer を使用して新しい ThinkPHP プロジェクトを作成します:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app
1
2プロジェクトディレクトリに移動する
新しく作成した ThinkPHP プロジェクトディレクトリに移動します:
bashcd /Applications/ServBay/www/servbay-thinkphp-app
1
初期設定
環境変数の設定
config/database.php
ファイルでデータベース接続情報とその他の環境変数を設定します。次の設定が正しく行われていることを確認します:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6
Web サーバの設定
DANGER
ThinkPHP の Rewrite ルールは一般的なルールと異なるため、カスタマイズが必要です。
ServBay の「ホスト」機能を使用して、ThinkPHP プロジェクトにアクセスする Web サーバを設定します。ServBay の「ホスト」設定で、新しいホストを追加します:
- 名前:
My First ThinkPHP Dev Site
- ドメイン:
servbay-thinkphp-test.local
その後、右上にあるカスタム設定
をクリックし、以下の内容を入力します:
encode zstd gzip
import set-log servbay-thinkphp-test.local
tls internal
@canonicalPath {
file {
try_files {path}/index.php
}
not path */
}
redir @canonicalPath {path}/ 308
root * /Applications/ServBay/www/servbay-thinkphp-app/public
route {
try_files {path} {path}/ /index.php?s={path}&{query}
php_fastcgi unix//Applications/ServBay/tmp/php-cgi-8.3.sock
}
file_server
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TIP
異なる PHP バージョンが必要な場合、php-cgi-8.3.sock
を該当する PHP バージョンに変更してください。また、set-log
をウェブサイトに対応するドメインに変更してください。
詳細な設定手順については、最初のウェブサイトを追加するを参照してください。
例示的なコードの追加
route/app.php
ファイルに以下のコードを追加し、"Hello ServBay!" を出力するようにします:
Route::get('servbay', function () {
return 'Hello ServBay!';
});
2
3
ウェブサイトにアクセスする
ブラウザを開き、https://servbay-thinkphp-test.local/servbay
にアクセスすると、Hello ServBay!
というページ出力が表示されます。
NoSQLデータベースの例
Memcached の例
Memcached 拡張のインストール
ServBay には Memcached 拡張が既にインストールされているため、別途インストールする必要はありません。
Memcached の設定
config/cache.php
ファイルで Memcached 接続情報を設定します:php'type' => 'memcached', 'host' => '127.0.0.1',
1
2Memcached の使用
コントローラ内でキャッシュを使用します:
phpuse think\facade\Cache; Route::get('/memcached', function () { Cache::set('key', 'value', 600); return Cache::get('key'); });
1
2
3
4
5
6
Redis の例
Redis 拡張のインストール
ServBay には Redis 拡張が既にインストールされているため、別途インストールする必要はありません。
Redis の設定
config/cache.php
ファイルで Redis 接続情報を設定します:php'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '',
1
2
3
4Redis の使用
コントローラ内でキャッシュを使用します:
phpuse think\facade\Cache; Route::get('/redis', function () { Cache::set('key', 'value'); return Cache::get('key'); });
1
2
3
4
5
6
リレーショナルデータベースの例
データベース構造とマイグレーションファイルの作成
データベースマイグレーションツールのインストール
ThinkPHP のデータベースマイグレーションツールを使用する前に、インストールします:
bashcomposer require topthink/think-migration
1マイグレーションファイルの作成
ThinkPHP 提供のコマンドラインツールを使用してマイグレーションファイルを作成します:
bashphp think migrate:create CreateUserTable
1マイグレーションファイルの編集
database/migrations
ディレクトリに新しく作成されたマイグレーションファイルを見つけ、その内容を編集してデータベース表構造を定義します:phppublic function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); }
1
2
3
4
5
6
7
8
9マイグレーションの実行
ThinkPHP 提供のコマンドラインツールを使用してマイグレーションを実行し、データベース表を作成します:
bashphp think migrate:run
1
MySQL の例
MySQL の設定
config/database.php
ファイルで MySQL 接続情報を設定します:php'type' => 'mysql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '3306',
1
2
3
4
5
6ユーザデータの書き込み
コントローラ内でユーザデータを追加します:
phpuse think\Db; Route::get('/mysql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9MySQL を使用する
コントローラ内でデータベースを呼び出します:
phpuse think\Db; Route::get('/mysql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
PostgreSQL の例
PostgreSQL の設定
config/database.php
ファイルで PostgreSQL 接続情報を設定します:php'type' => 'pgsql', 'hostname' => '127.0.0.1', 'database' => 'servbay_thinkphp_app', 'username' => 'root', 'password' => 'password', 'hostport' => '5432',
1
2
3
4
5
6ユーザデータの書き込み
コントローラ内でユーザデータを追加します:
phpuse think\Db; Route::get('/pgsql-add', function () { Db::table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; });
1
2
3
4
5
6
7
8
9PostgreSQL を使用する
コントローラ内でデータベースを呼び出します:
phpuse think\Db; Route::get('/pgsql', function () { $users = Db::table('users')->select(); return json($users); });
1
2
3
4
5
6
以上のステップを通じて、ThinkPHP 8 プロジェクトを作成し、実行することができました。また、ServBay が提供する機能を使用してプロジェクトを管理およびアクセスし、複数のデータベースに接続してデータを操作することができました。