建立並運行 CodeIgniter 項目
什麼是 CodeIgniter?
CodeIgniter 是一個輕量級的 PHP 框架,適用於開發快速、高效的 Web 應用程式。它遵循 MVC(Model-View-Controller)設計模式,提供了豐富的功能和工具,使開發者能夠快速構建高品質的 Web 應用程式。CodeIgniter 以其簡潔、高性能和容易學習而聞名,是許多開發者的首選框架。
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 中,開發者通常需要自己編寫 Rewrite 規則和 .htaccess 文件來處理 URL 重寫和其他配置。然而,ServBay 出廠時已經配置好了 Caddy 的規則,因此,除非有特殊需求,否則開發者無需自己編寫這些規則。
了解更多
更多相關信息,請參閱Rewrite與htaccess、Apache網站如何遷移到ServBay、NGINX網站如何遷移到ServBay。
建立 CodeIgniter 項目
TIP
ServBay 建議開發者把網站放置在/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
配置 Web 伺服器
使用 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
5使用 Memcached
在控制器中使用緩存:
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
7在文件
app/Config/Routes.php
中增加路由:php$routes->get('/memcached', 'Home::memcached');
1
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
9使用 Redis
在控制器中使用緩存:
phppublic function redis() { $redis = \Config\Services::cache(); $redis->save('key', 'Hello Redis!'); $value = $redis->get('key'); return $value; }
1
2
3
4
5
6
7在文件
app/Config/Routes.php
中添加路由:php$routes->get('/redis', 'Home::redis');
1
關係型資料庫範例
建立資料庫結構和遷移文件
建立遷移文件
使用 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
9使用 MySQL
在控制器中調用資料庫:
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
9使用 PostgreSQL
在控制器中調用資料庫:
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
和https://servbay-codeigniter-test.local/pgsql
通過以上步驟,您成功建立並運行了一個 CodeIgniter 項目,並使用 ServBay 提供的功能來管理和訪問您的項目,同時連接了多種資料庫並調用數據。希望這篇文章能幫助您快速上手 CodeIgniter,並應用於您的項目中。