php – 將 Codeigniter 3 改用 Composer 自動讀取 Model 的方法

打開 composer 自動讀取

設定 config.php 的 composer_autoload 項目,參考內文

 

指派路徑

在 composer.json 添加 autoload ,告訴 composer 自動讀取 model 的路徑。

 

設定資料庫連接

到 config/database.php 設定相關資料庫。

 

添加 Trait

新增 application/models/Tool.php 名稱可以自己命名。作為多個 model 會用到的 Trait 共用程式。

 

添加 Model

新增 application\models\Member.php ,並在其中使用 trait。

 

運行傾倒

 

試試看

前往 controllers/Welcome.php 修改為

 

這樣就能完成自動讀取 model ,不需要透過 CI 的 autoload.php 。 composer 的運作原理,是當呼叫 model 發現不存在的時候,才會去尋找你定義的路徑查看是否有檔案。效能上是比較好的。

 

php – composer.json 設定 classmap 指定自動讀取的檔案或路徑

置入類別

若我們有2個 Library ,位於 Jsn/Cart/lib/Cart.php

與 Jsn/Cart/lib/Transport.php

因為我們要用 Composer 的 classmap 設定。必須要符合 psr-0(已棄用), psr-4 的規範,所以類別一定要按照格式,例如我上面的就有按照psr-4。詳細說明參考原文,或中文網友翻譯。基本上注意這幾點就可以

  • 一定要有命名空間,如 namespace Jsn
  • 可以有子命名空間,可能長這樣 “namespace Jsn\DB\Mysql"  “namespace Jsn\DB\Pdo",那麼 DB 就是子命名名空間
  • 下滑線沒有意義,所以不要再使用了
  • 敏感大小寫區分

所以基本上我們會這麼使用類別

 

告訴 Composer 路徑

在 composer.json 添加 autoload 設定

 

composer 傾倒

接著下命令讓 composer 傾倒 composer dump-autoload 。如果路徑設定沒問題,就會顯示 Generating autoload files 字句。我們可以檢查 vendor/composer/autoload_classmap.php 有幫你自動寫入路徑。

 

測試看看

 

 

 

composer – 發佈你的套件

在 github 建立一個你的倉儲,例如 mylib
%e6%93%b7%e5%8f%96

 

在你的程式添加 composer.json 並寫入需要的內容以後,推送到 GitHub 倉儲。composer.json 例如

到 GitHub 點 Settings
%e6%93%b7%e5%8f%96

 

點選 Integrations & services > Add service > packagist

%e6%93%b7%e5%8f%96

 

在表單填入 User 你的帳號還有 Token
%e6%93%b7%e5%8f%96

Token 可以在你的 http://packagist.org/profile/ 個人頁找到
%e6%93%b7%e5%8f%96

 

填完後,在表單下方點擊綠色按鈕 Add service 送出,得到成功的提示
%e6%93%b7%e5%8f%96

 

接著回到 packagist.org 點選 Submit 來到下面頁面,在框框中填寫你的 GitHub 倉儲網址。並按下 Check
%e6%93%b7%e5%8f%96

檢查沒問題後再按下 Submit 成功發佈%e6%93%b7%e5%8f%96

接著要設定自動更新,這樣 GitHub 推送了新的資料以後,才會同步到 Packagist 。也可以參考官方的說明,但我覺得說的不清楚…回到 GitHub > Settings > Integrations & services > Services > 剛剛建立的 Packagist > Edit ,就會發現頁面右上角有個 Test service ,點擊後測試連接成功。
%e6%93%b7%e5%8f%96

 

回到 Packagist ,點擊 update
%e6%93%b7%e5%8f%96

 

成功後,提示就會消掉囉,這樣整個流程就完成了。可以在搜尋打打看你的套件,應該就會找到了。

 

xampp – 建立虛擬主機路徑

若打算將網址 mylib.com.tw 對應到本機伺服器 http://localhost/test 的方法。

 

設定 hosts

打開 C:\Windows\System32\drivers\etc\hosts 編輯,可以在最底下添加指向後存檔

 

設定 httpd.conf

打開 C:\xampp\apache\conf\httpd.conf 後發現裡面有這行,代表 xampp 把虛擬主機的設定檔而外引入。這麼做的好處是避免整份 httpd.conf 太過凌亂。

所以我們打開 C:\xampp\apache\conf\extra\httpd-vhosts.conf 添加這段文字,並將 DocumentRoot、 ServerName、Directory 修改對應後存檔。

建議重新啟動 apache 後,網址打上 http://mylib.com.tw/ 就可以看到了。

參考網址

 

php – 在 Codeigniter 操作 Composer 自動載入套件

建立 CI 專案

當安裝好 Composer 以後,我們從遠端取得 CI 專案。我的根目錄在 C:\xampp\htdocs\www\

看到目錄 test 底下有這樣的資料
%e6%93%b7%e5%8f%96

下載套件

composer.json 就是我們需要設定 composer 的檔案。打開 composer.json 可以看到類似這樣

require 裡面添加我們想要下載的套件,例如 monolog/monolog

在命令提示,下指令進入專案後安裝。記得使用 update ,因為本身已經存在 composer 的初始化,我們需要的是升級套件。

可以看到路徑 vendor/monolog 已經下載下來了。

打開自動載入

進入 application/config/config.php 修改文字。

若將 FALSE 改成 TRUE,代表你的路徑在 application/vendor/autoload.php。但我們的 vendor 在專案目錄,所以要自行指定路徑。

我們來測試是否正確的自動加載。打開控制器 application/controllers/Welcome.php 看到預設的畫面

寫寫看這個 log 工具,看看能否觸發。

執行後就會看到專案底下有個 app.log 裡面內容如

這就代表 CI 成功透過 Composer 自動載入需要的套件了。若要開始 CI 專案,我們可以先建立虛擬主機,這樣也方便開發。可以參考 xampp – 建立虛擬主機路徑