CI擴充套件service服務層

2021-09-30 13:37:41 字數 2933 閱讀 6962

基於ci框架版本3.1.5

1.在專案核心core目錄下新建自己的loader.php檔案並繼承ci_loader
<?php 

/** * created by phpstorm.

* user: wang.liangliang

* date: 2017/7/7

* time: 13:07

*/class

my_loader

extends

ci_loader

/*** service loader

** this function lets users load and instantiate classes.

**@param string the name of the class

*@param mixed the optional parameters

*@param string an optional object name

*@return object

*/public

function

service

($service = '', $params = null, $object_name = null)

else

if (is_array($service))

return

$this;

}$path = '';

// is the service in a sub-folder? if so, parse out the filename and path.

if (($last_slash = strrpos($service, directory_separator)) !== false)

if (empty($object_name))

$object_name = strtolower($object_name);

if (in_array($object_name, $this->_ci_services, true))

$ci = &get_instance();

if (isset($ci->$object_name))

//load my_service

$class = config_item('subclass_prefix') . 'service';

if (!class_exists($class, false)) }}

$service = ucfirst($service);

if (!class_exists($service, false))

include_once($service_path . directory_separator . $path . $service . '.php');

$ci = &get_instance();

if ($params !== null) else

$this->_ci_services = $object_name;

if (!class_exists($service, false))

break;}}

return

$this;}}

2.在同級目錄下建立my_service.php.**如下:

<?php 

/** * created by phpstorm.

* user: wang.liangliang

* date: 2017/7/7

* time: 11:59

*/class

my_service

function

__get

($key)

}

3.同樣在專案根目錄下建立檔案service.並在service層下建立檔案demo.php 並繼承my_service

<?php 

/** * created by phpstorm.

* user: wang.liangliang

* date: 2017/7/7

* time: 13:58

*/class

demo

extends

my_service

public

function

test

($name)

}

4.編寫test.php controller 測試. 在構造器中load 剛才寫的demo service

<?php 

/** * created by phpstorm.

* user: wang.liangliang

* date: 2017/7/7

* time: 13:56

*/class

test

extends

ci_controller

public

function

getname

()

}

5 model層測試方法.

如何讓CI框架支援service層

本文主要介紹了在controller和model中加乙個業務層service,由它來負責業務邏輯,封裝好的呼叫介面可以被controller復用,提高了通用的業務邏輯的復用性,設計到具體業務實現會呼叫model的介面。大家知道codeigniter框架式mvc分層的,通常大家把業務邏輯寫到contr...

「讓CI框架支援service層」的那些問題

自己寫了個demo,用php的ci框架,好長時間沒搞了,都忘記了,想新增service層的時候,發現現有網上的code有點問題。其實都不是大問題,注意一下就好了 抄了部分 連線如下 搜尋的結果 都或多或少的不完成 然後整合上述 解決部分問題 注意問題,如下 1,配置 config subclass ...

controller層和service層的作用

1.在controller和service裡都寫那些 controller,從字面上理解是控制器,所以它是負責業務排程的,所以在這一層應寫一些業務的排程 而具體的業務處理應放在service中去寫,而且service不單純是對於dao的增刪改查的呼叫,service是業務層,所以應該更切近於具體業務...