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

打開 composer 自動讀取

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

 

指派路徑

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

"autoload": {
	"classmap": [
		"application/models"
	]
}

 

設定資料庫連接

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

 

添加 Trait

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

<?
namespace Model;
 
trait Tool {
    
    protected $ci;
    protected $db;
 
    public function __construct()
    {
        $this->ci =& get_instance();
        $this->ci->load->database();
 
        $this->db = $this->ci->db;
    }
}

 

添加 Model

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

<?
namespace Model;

class Member {

    //添加 model 共用的片段
    use Tool;

    public function all()
    {
        return $this->db->get("member")->result();
    }
}

 

運行傾倒

composer dump-autoload

 

試試看

前往 controllers/Welcome.php 修改為

public function index()
{
	$member = new Model\Member;
	$datalist = $member->all();
	foreach ($datalist as $datainfo)
	{
		echo $datainfo->id;
	}
}

 

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

 

Comments

發表迴響