CodeIgniter使用總結

2021-09-14 03:21:39 字數 1957 閱讀 6292

最近在使用codeigniter開發乙個企業站專案,一開始是把前台和後台分開作為兩個單獨的專案,但後來想想為啥不能放在乙個專案裡呢,便有了改造的想法。

先上一張最終的目錄結構圖

|-- config/

| |-- routes.php

|-- controllers/

| |-- backend/

| |-- frontend/

|-- core/

| |-- my_controller.php

| |-- my_router.php

|-- views/

| |-- backend/

| |-- frontend/

|-- static/

| |-- backend/

| |-- frontend/

|-- index.php

這樣設計的的好處:

1、目錄結構清晰

2、保持了單入口index.php

controllers/backend和controllers/frontend目錄下的控制器可以分別繼承不同的基類。比如:後台控制器繼承基類backend_controller,前台控制器繼承基類frontend_controller。

my_controller擴充套件核心系統類ci_controller,可以根據業務需要新增一些公共功能。

backend_controller和frontend_controller均繼承自my_controller。

那麼問題來了,backend_controller和frontend_controller定義在**呢。答案如下:

<?php

class my_controller extends ci_controller

}/**

* 後台基類

* class backend_controller

*/class backend_controller extends my_controller

}/**

* 前台基類

* class frontend_controller

*/class frontend_controller extends my_controller

}

不指定任何控制器時,希望能夠訪問預設控制器,所以我們去設定$route['default_controller'] = 'frontend/***';但是訪問會提示404錯誤,到底是因為什麼原因呢。

檢視system/core/router.php原始碼

if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2)

關鍵在於定義my_router類,重寫_set_default_controller方法

<?php

class my_router extends ci_router

if(sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2)

$this->set_directory($class);

$class = $method;

if (sscanf($method, '%[^/]/%s', $class, $method) !== 2)

}return;

}$this->set_class($class);

$this->set_method($method);

$this->uri->rsegments = [

1 => $class,

2 => $method];}

}

demo位址

CodeIgniter框架URL路由總結

uri 路由 一般來說,uri字串有著和它唯一對應的控制器 controller 類 方法。uri的各個部分是如下模式 pattern 複製 如下 然而在一些例子中,你也許想重定向這種關係來呼叫乙個不同的類 方法 class function 而不是與url一一對應 的呼叫 例如,你可能想使你的ur...

codeigniter使用pdo的參考配置

1 配置檔案修改 db default array dsn mysql dbname ci ecshop host 127.0.0.1 username root password dbdriver pdo 2 查詢操作 sql select from aaa where id id sql arr...

使用配置類定義 Codeigniter 全域性變數

config 的陣列。如果需要新增全域性配置項,可以在這個檔案中實現,考慮到自定義配置和框架配置的分離,建議新建乙個檔案 vars.php,然後做如下定義 工作目錄配置 config src cache fcpath src cache config src modules fcpath src m...