CodeIgniterプロジェクトの作成と実行
CodeIgniterとは?
CodeIgniterは軽量のPHPフレームワークで、迅速かつ効率的なWebアプリケーションの開発に適しています。MVC(Model-View-Controller)デザインパターンに従い、豊富な機能とツールを提供します。開発者が高品質のWebアプリを迅速に構築できるよう、シンプル、高性能、そして学びやすさが特徴です。CodeIgniterはそのシンプルさ、高性能さ、学びやすさで多くの開発者に選ばれています。
CodeIgniterの主な特徴と利点
- 軽量:CodeIgniterのコアシステムは非常にコンパクトで、必要なコンポーネントのみを含み、読み込み速度が非常に速いです。
- 高性能:高いパフォーマンスとスピードで知られ、高並列リクエストを処理できます。
- 学びやすい:シンプルで使いやすいAPIと豊富なドキュメントが提供されており、開発者はすぐに使い始めることができます。
- 柔軟性:開発者は自由にサードパーティのライブラリやプラグインを使用でき、機能の拡張やカスタマイズが簡単です。
- 強力なコミュニティサポート:活発な開発者コミュニティとサードパーティの豊富な拡張があります。
CodeIgniterは、開発者が高性能かつ高品質なWebアプリを迅速に構築できるように支援します。さまざまな規模のプロジェクトに適しています。
ServBayを使用してCodeIgniterプロジェクトを作成および実行
この記事では、ServBayが提供するPHP環境を使用してCodeIgniterプロジェクトを作成し、実行する方法を説明します。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への移行を参照してください。
CodeIgniterプロジェクトの作成
TIP
ServBayは、開発者がWebサイトを管理しやすいように/Applications/ServBay/www
ディレクトリに配置することをお勧めします。
Composerのインストール
ServBayは出荷時にComposerを内蔵しています。別途インストールする必要はありません。
CodeIgniterプロジェクトの作成
Composerを使用して新しいCodeIgniterプロジェクトを作成します:
bashcd /Applications/ServBay/www mkdir servbay-codeigniter-app cd servbay-codeigniter-app composer create-project codeigniter4/appstarter .
1
2
3
4プロジェクトディレクトリに入る
新しく作成したCodeIgniterプロジェクトディレクトリに入ります:
bashcd /Applications/ServBay/www/servbay-codeigniter-app
1
初期設定
データベース接続の設定
app/Config/Database.php
ファイルでデータベース接続情報を設定します:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8mb4', 'DBCollat' => 'utf8mb4_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ウェブサーバーの設定
ServBayの「ホスト」機能を使用して、Webサーバーを介してCodeIgniterプロジェクトにアクセスします。ServBayの「ホスト」設定で新しいホストを追加します:
- 名前:
My First CodeIgniter Dev Site
- ドメイン:
servbay-codeigniter-test.local
- サイトタイプ:
PHP
- PHPバージョン:
8.3
を選択 - ウェブルート:
/Applications/ServBay/www/servbay-codeigniter-app/public
詳細な設定手順は最初のサイトの追加を参照してください。
サンプルコードの追加
app/Controllers/Home.php
ファイルに以下のコードを追加します:
namespace App\Controllers;
use CodeIgniter\Controller;
class Home extends Controller
{
public function index()
{
return 'Hello ServBay!';
}
public function memcached()
{
$cache = \Config\Services::cache();
$cache->save('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $value;
}
public function redis()
{
$redis = \Config\Services::cache();
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $value;
}
public function mysqlAdd()
{
$db = \Config\Database::connect();
$db->table('users')->insert([
'name' => 'ServBay',
'email' => '[email protected]',
]);
return 'User added';
}
public function mysql()
{
$db = \Config\Database::connect();
$users = $db->table('users')->get()->getResult();
return json_encode($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
ウェブサイトのアクセス
ブラウザを開き、次のURLにアクセスします:
https://servbay-codeigniter-test.local
:ページにHello ServBay!
と表示されます。
NoSQLデータベースの例
Memcachedの例
Memcached拡張のインストール
ServBayにはMemcached拡張が予めインストールされています。追加でインストールする必要はありません。
Memcachedの設定
app/Config/Cache.php
ファイルでMemcached接続情報を設定します:phppublic $memcached = [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 1, ];
1
2
3
4
5Memcachedの使用
コントローラでキャッシュを使用します:
phppublic function memcached() { $cache = \Config\Services::cache(); $cache->save('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $value; }
1
2
3
4
5
6
7app/Config/Routes.php
ファイルにルートを追加します:php$routes->get('/memcached', 'Home::memcached');
1ブラウザを開き、次のURLにアクセスします:
https://servbay-codeigniter-test.local/memcached
Redisの例
Redis拡張のインストール
ServBayにはRedis拡張が予めインストールされています。追加でインストールする必要はありません。
Redisの設定
app/Config/Cache.php
ファイルでRedis接続情報を設定します:phppublic string $handler = 'redis'; public $default = [ 'host' => '127.0.0.1', 'password' => null, 'port' => 6379, 'timeout' => 0, 'database' => 0, ];
1
2
3
4
5
6
7
8
9Redisの使用
コントローラでキャッシュを使用します:
phppublic function redis() { $redis = \Config\Services::cache(); $redis->save('key', 'Hello Redis!'); $value = $redis->get('key'); return $value; }
1
2
3
4
5
6
7app/Config/Routes.php
ファイルにルートを追加します:php$routes->get('/redis', 'Home::redis');
1ブラウザを開き、次のURLにアクセスします:
https://servbay-codeigniter-test.local/redis
リレーショナルデータベースの例
データベース構造とマイグレーションファイルの作成
マイグレーションファイルの作成
CodeIgniterのCLIツールを使用してマイグレーションファイルを作成します:
bashphp spark make:migration create_users_table
1マイグレーションファイルの編集
app/Database/Migrations
ディレクトリで新しく作成されたマイグレーションファイルを見つけて、データベーステーブル構造を定義するために編集します:phpuse CodeIgniter\Database\RawSql; public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, ], 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('CURRENT_TIMESTAMP'), ], 'updated_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ], ]); $this->forge->addKey('id', true); $this->forge->createTable('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マイグレーションの実行
CodeIgniterのマイグレーションコマンドを使用してマイグレーションを実行し、データベーステーブルを作成します:
bashphp spark migrate
1
MySQLの例
MySQLの設定
app/Config/Database.php
ファイルでMySQL接続情報を設定します:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19ルートを追加
app/Config/Routes.php
ファイルに以下のルートを追加します:php$routes->get('/mysql-add', 'Home::mysqlAdd'); $routes->get('/mysql', 'Home::mysql');
1
2ユーザーデータの書き込み
コントローラでユーザーデータを書き込みます:
phppublic function mysqlAdd() { $db = \Config\Database::connect(); $db->table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; }
1
2
3
4
5
6
7
8
9MySQLの使用
コントローラでデータベースを呼び出します:
phppublic function mysql() { $db = \Config\Database::connect(); $users = $db->table('users')->get()->getResult(); return json_encode($users); }
1
2
3
4
5
6ブラウザを開き、
https://servbay-codeigniter-test.local/mysql-add
およびhttps://servbay-codeigniter-test.local/mysql
にアクセスします。
PostgreSQLの例
PostgreSQLの設定
app/Config/Database.php
ファイルでPostgreSQL接続情報を設定します:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'Postgre', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 5432, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19データベースマイグレーションファイルの作成
以下のコマンドを使用してデータベースマイグレーションファイルを生成します:
bashphp spark make:migration create_users_table
1データベースマイグレーションファイルの編集
phpuse CodeIgniter\Database\RawSql; public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, ], 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('NOW()'), ], 'updated_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('NOW()'), ], ]); $this->forge->addKey('id', true); $this->forge->createTable('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データベースマイグレーションの実行
以下のコマンドを実行してデータベースマイグレーションを実行し、テーブル構造を作成します:
bashphp spark migrate
1ルートを追加
app/Config/Routes.php
ファイルに以下のルートを追加します:php$routes->get('/pgsql-add', 'Home::pgsqlAdd'); $routes->get('/pgsql', 'Home::pgsql');
1
2ユーザーデータの書き込み
コントローラでユーザーデータを書き込みます:
phppublic function pgsqlAdd() { $db = \Config\Database::connect(); $db->table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; }
1
2
3
4
5
6
7
8
9PostgreSQLの使用
コントローラでデータベースを呼び出します:
phppublic function pgsql() { $db = \Config\Database::connect(); $users = $db->table('users')->get()->getResult(); return json_encode($users); }
1
2
3
4
5
6ブラウザを開き、
https://servbay-codeigniter-test.local/pgsql-add