codeigniter3整合composer管理工具,比較優雅的做法

michaelzhouh發表於2019-02-16

前言,希望codeigniter4早點發布吧,目前還有專案用的codeigniter3,想用github上那麼多優秀的第三方庫,曾怎麼辦呢?而且這些庫基本都是通過composer安裝的,下面介紹整合composer包管理器方法:

1、安裝composer,這點不贅述了。

2、專案根目錄新建composer.json檔案,比如我現在ci中要使用一個jwt庫

{
  "require": {
    "firebase/php-jwt": "*"
  }
}

3、該目錄下命令列執行:composer install
或者上面2個步驟,簡化成下面這步也可以
composer require firebase/php-jwt

4、下面開始正式整合到ci,這裡有2個方法:

方法一:簡單粗暴的(不推薦)

require_once `./vendor/autoload.php`;
//上面這一行新增到index.php的這個位置
require_once BASEPATH.`core/CodeIgniter.php`;

方法二:優雅的(推薦)
application/libraries新建MY_Composer.php

<?php
/**
 * 關於MY_Composer的註釋
 *
 * @author 新豬
 */
class MY_Composer 
{
    function __construct() 
    {
        include("./vendor/autoload.php");
    }
}

然後在config/autoload.php修改

$autoload[`libraries`] = array(`MY_Composer`,`database`,`session`);

5、使用

<?php
use FirebaseJWTJWT;

class TestController extends CI_Controller {
    public function index() {
        $key = "example_key";
        $token = array(
            "iss" => "http://example.org",
            "aud" => "http://example.com",
            "iat" => 1356999524,
            "nbf" => 1357000000
        );
        $jwt = JWT::encode($token, $key);
        $decoded = JWT::decode($jwt, $key, array(`HS256`));

        print_r($decoded);
    }
}

完畢,希望對大家有所幫助。

相關文章