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

建立 CI 專案

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

//進入你的伺服器根目錄
cd C:\xampp\htdocs\www

//在路徑 test 建立專案
composer create-project codeigniter/framework test 

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

下載套件

composer.json 是設定檔,打開如下

{
	"description": "The CodeIgniter framework",
	"name": "codeigniter/framework",
	"type": "project",
	"homepage": "https://codeigniter.com",
	"license": "MIT",
	"support": {
		"forum": "http://forum.codeigniter.com/",
		"wiki": "https://github.com/bcit-ci/CodeIgniter/wiki",
		"irc": "irc://irc.freenode.net/codeigniter",
		"source": "https://github.com/bcit-ci/CodeIgniter"
	},
	"require": {
		"php": ">=5.2.4"
	},
	"suggest": {
		"paragonie/random_compat": "Provides better randomness in PHP 5.x"
	},
	"require-dev": {
		"mikey179/vfsStream": "1.1.*"
	}
}

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

"require": {
    "php": ">=5.2.4",
    "monolog/monolog": "1.0.*"
},

接著 update 套件

cd test 
composer update

可以看到路徑 vendor/monolog 已經下載下來,而且還會看到依賴套件。

打開自動載入

修改 application/config/config.php

$config['composer_autoload'] = 'vendor/autoload.php';

注意!若將 FALSE 改成 TRUE,代表你的路徑在 application/vendor/autoload.php。但我們的 vendor 在專案目錄,所以要自行填入路徑。當然官方預設是將 vendor 放在 application 內也是不錯的方法,要搬移或升級的時候也是比較明確。

測試是否如期的自動加載,打開 application/controllers/Welcome.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {
	public function index()
	{
		$this->load->view('welcome_message');
	}
}

寫寫看安裝的 Monolog (這是一個功能多的 log 工具) 能否觸發。

public function index()
{
    $log = new Monolog\Logger('name');
    $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
    $log->addWarning('Hello World', []);
}

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

[2016-10-18 14:49:10] name.WARNING: Hello World [] []

這就代表 CI 成功透過 Composer 自動載入需要的套件。另外,我們也能建立虛擬主機,可以參考 xampp – 建立虛擬主機路徑

若想要將你的 Libraries、Models、Helpers 交給 Composer 自動讀取,建議看這篇:Codeigniter 安裝並使用 Composer 自動載入完整步驟

 

Comments

  1. ucandoit1010
    2018-01-22 - 10:26

    應該是 composer require

    update 會出現一堆東西

發表迴響