php – Codeigniter – 在任何地方都能使用 CI 開發

繼承前一篇 Codeigniter – 如何讓 System 交給 Composer 保管

最近因為要在 Codeigniter 以外使用 Codeigniter 的工具,花了一兩天思考,後來受到製作 Codeigniter Restful 的 Chris Kacerguis 啟發,想到原來可以這麼設計。

假設我們想把已經寫好的 Codeigniter 類別庫、或是想使用 Codeigniter 的工具,用在如應用在其他 CMS、其他框架、傳統 PHP 的話,那該如何橋接呢?很簡單,改改名稱就好。

 

修改路徑與檔名

  • application/ 替換成 ci_app/
  • index.php 替換成 bridge_codeigniter.php

bridge_codeigniter.php 本來是 Codeigniter 的 index.php,在這個範例中為了語意化,我們不使用 index.php 。

 

替換 Codeigniter application 位置

瀏覽器開啟 bridge_codeigniter.php 應該也能看到 Codeigniter 的歡迎畫面,不過我們其實不需要了。

 

刪除 Welcome 歡迎畫面

ci_app/controllers/Welcome.php

 

建立測試文件

新增一個 helloworld.php

我示範了 Codeigniter 的字串加解密類別庫,瀏覽器打開 helloworld.php 能看到結果。這樣一來,就能在任何 PHP 底下執行 Codeigniter ,接著發揮你的創意吧。

雖然這種使用方式無疑會跑完整個 codeigniter 生命週期,但因為 CI 的效能算是框架中快速的,中小型開發不會有太大的影響,所以這是一種把 Codeigniter 接在其他系統底下的方式,但是否使用就取決於你的決定。

php – Codeigniter – 如何讓 System 交給 Composer 保管

前言

一般來說,最簡單方式是使用 “composer create-project codeigniter/framework” 來安裝,可以參考這一篇教你的一般安裝法。不過這裡要教的安裝方式,就是分離 system 目錄,可以達到

  1. 移植到主機不需移動 system,因為核心的部分統一交給 composer 管理,由 composer install 統一下載。
  2. GIT 在使用提交 git commit 指令的時候,無須加入 system 目錄。
  3. 釋出 Codeigniter 版本的時候,只要指定版本並下指令 composer update 就可以自動替換掉目錄 system,免除手動替換。
  4. 可以在任何CMS、框架或傳統 PHP 開發中使用 Codeigniter 功能(參考我)

這種安裝方式官方沒有教,不過在 CI 中的 index.php 都已經支援這樣的特性。

 

安裝步驟

 

使用 composer 下載

新增一個空白目錄後初始化 composer.json 並下載 codeigniter。注意!為了讓開發的系統穩定,我固定版本 3.1.9 ,請改成你想要的版本可以在這裡找到

因為 Codeigniter 升級有可能會需要小幅度的修改你的程式碼 (但大致上來說很少),明確指定可以避免執行 composer update 不小心升級造成的麻煩。

 

複製

將這兩個檔案複製到你的根目錄

  • vendor/codeigniter/framework/application/
  • vendor/codeigniter/framework/index.php

這時候打開瀏覽器,只會看到遺失訊息。這是因為預設的 system 資料夾指定位置找不到。

 

修改 index.php

發現了嗎?我們把 system 指向到 vendor 中的 Codeigniter ,只要重新打開瀏覽器就可以看到 Hello World 。

 

如何升級/降級 Codeigniter?

直接修改 composer.json 中的版本,例如我把 3.1.9 降級為 3.1.8

這樣就完成替換囉,你可以試著 echo CI_VERION; 查看。

決定 Codeigniter 使用哪個版本核心,取決於 composer.json 的設定檔,但記得每次版本異動都要查看官方升級指南喔。

 

PHP – Codeigniter 支持 Bootstrap 4 的分頁設定

Codeigniter 夾帶的 pagination 樣式若要套用在 Bootstrap 4 的話,請依照以下步驟

Config 建議總設定

為了讓全域都可以使用,我們在 config/pagintion.php 添加以下程式碼

 

Controller 範例

View 範例

 

 

php – Codeigniter 安裝並使用 Composer 自動載入(autoload)完整步驟

  1. 透過 Composer 安裝 CI
  2. 自動載入自訂的 Models, Libraries, Helpers
  3. 在 Controllers 測試

題外話,如果你對 Codeigniter 開發有過一小段時間,這兩篇文章很值得你來讀讀

透過 Composer 安裝 Codeigniter 3

如果你曾經用過 Codeigniter 與 Composer 一點經驗,這份教學能快速幫你安裝整個流程。

  • 準備在 C:\xampp\htdocs\www 建立 ci 當作專案路徑
  • PHP Version 7.0.9
  • 已安裝 Composer

如果已經先建立好 ci 路徑的話,當然也可以使用「 

 

改設定: application/config/config.php

 建議將

改成

修改 autoload.php

 

移除 index.php:根目錄增加 .htaccess,並指定不用 Rewrite 的檔案或路徑名稱。儲存後瀏覽 http://localhost/ci/welcome/index 是否等於 http://localhost/ci/index.php/welcome/index。若要詳細 SEO 優化,可捲至底下參考 3。

如果要自動將 http 導向 https 可以這麼寫

 

修改 index.php


 

自動載入自訂的 Models, Libraries, Helpers

修改 composer.json

  • 類別 (Class) 使用 “psr-4” 規範,後面的 libraries 製作我會使用這個規範。
  • 方法 (Function) 使用 “files”
  • classmap 指定的是一些不屬於 psr-4 規範的類別,可能是我們從 Github 下載其他人的類別

Models

增加 application/models/Tool.php,提供給 Models 使用 CI 內部資源

*** 下面是我個人紀錄為了方便 select 取資料所擴充的用法,網友不必使用 ***

 

增加 application/models/User.php

Libraries

增加 application/libraries/Home.php

Helpers

增加 application/Helpers/Datetime.php。

Function 比較麻煩,每增加一個檔案就要添加到 composer.json => “file”

在 Controllers 測試

修改 applicatioin/controllers/Welcome.php

瀏覽後會得到

 

可以參考這些幫助你理解

  1. 將 Codeigniter 3 改用 Composer 自動讀取 Model 的方法
  2. 在 Codeigniter 操作 Composer 自動載入套件
  3. php – codeigniter 隱藏或省略 index.php
  4. Compoer – 非常簡單的使用 psr-4 來建立自動讀取類別

php – Codeigniter – Query Builder Class 快速檢視表

欄位

$this->db->get()
$this->db->get_compiled_select()
$this->db->get_where()

$this->db->select()
$this->db->select_max()
$this->db->select_min()
$this->db->select_avg()
$this->db->select_sum()

從哪個資料表

$this->db->from()
$this->db->join()

條件

$this->db->where()
$this->db->or_where()
$this->db->where_in()
$this->db->or_where_in()
$this->db->where_not_in()
$this->db->or_where_not_in()

$this->db->like()
$this->db->or_like()
$this->db->not_like()
$this->db->or_not_like()

$this->db->group_by()

$this->db->distinct()

$this->db->having()
$this->db->or_having()
$this->db->order_by()

數量

$this->db->limit()
$this->db->count_all_results()
$this->db->count_all()

分組

$this->db->group_start()
$this->db->or_group_start()
$this->db->not_group_start()
$this->db->or_not_group_start()
$this->db->group_end()

新增

$this->db->insert()
$this->db->get_compiled_insert()
$this->db->insert_batch()

修改

$this->db->replace()
$this->db->set()
$this->db->update()

$this->db->update_batch()
$this->db->get_compiled_update()

刪除

$this->db->delete()
$this->db->empty_table()
$this->db->truncate()
$this->db->get_compiled_delete()

緩存

$this->db->start_cache()
$this->db->stop_cache()
$this->db->flush_cache()