【PHP】CI框架原始碼分析核心檔案之Controller.php
<!--?php
* CodeIgniter
*
* An open source application development framework for PHP
*
* This content is released under the MIT License (MIT)
*
* Copyright (c) 2014 - 2016, British Columbia Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @package CodeIgniter
* @author EllisLab Dev Team
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. ()
* @copyright Copyright (c) 2014 - 2016, British Columbia Institute of Technology ()
* @license MIT License
* @link
* @since Version 1.0.0
* @filesource
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Application Controller Class
*
* This class object is the super class that every library in
* CodeIgniter will be assigned to.
*
* @package CodeIgniter
* @subpackage Libraries
* @category Libraries
* @author EllisLab Dev Team
* @link /user_guide/general/controllers.html
*/
class CI_Controller {
/**
*引用CI單例項
* Reference to the CI singleton
*
* @var object
*/
private static $instance;
/**
* Class constructor
*
* @return void
*/
public function __construct()
{
self::$instance =& $this;
// Assign all the class objects that were instantiated by the
// bootstrap file (CodeIgniter.php) to local class variables
// so that CI can run as one big super object.
//指派所有被引導檔案(CodeIgniter.php)例項化的類物件給本地類變數
//這樣CI就能以超級物件執行
foreach (is_loaded() as $var => $class)
{
//動態賦值屬性--即把is_load()中的例項化的物件賦值給控制器的本地屬性,達到CI超級類的目的
$this->$var =& load_class($class);
}
//載入Loader類
$this->load =& load_class('Loader', 'core');
//初始化(autolaod陣列之指定的類,以及config設定)
$this->load->initialize();
log_message('info', 'Controller Class Initialized');
}
// --------------------------------------------------------------------
/**
*獲得CI的單例項
* Get the CI singleton
*
* @static
* @return object
*/
public static function &get_instance()
{
return self::$instance;
}
}
* CodeIgniter
*
* An open source application development framework for PHP
*
* This content is released under the MIT License (MIT)
*
* Copyright (c) 2014 - 2016, British Columbia Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @package CodeIgniter
* @author EllisLab Dev Team
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. ()
* @copyright Copyright (c) 2014 - 2016, British Columbia Institute of Technology ()
* @license MIT License
* @link
* @since Version 1.0.0
* @filesource
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Application Controller Class
*
* This class object is the super class that every library in
* CodeIgniter will be assigned to.
*
* @package CodeIgniter
* @subpackage Libraries
* @category Libraries
* @author EllisLab Dev Team
* @link /user_guide/general/controllers.html
*/
class CI_Controller {
/**
*引用CI單例項
* Reference to the CI singleton
*
* @var object
*/
private static $instance;
/**
* Class constructor
*
* @return void
*/
public function __construct()
{
self::$instance =& $this;
// Assign all the class objects that were instantiated by the
// bootstrap file (CodeIgniter.php) to local class variables
// so that CI can run as one big super object.
//指派所有被引導檔案(CodeIgniter.php)例項化的類物件給本地類變數
//這樣CI就能以超級物件執行
foreach (is_loaded() as $var => $class)
{
//動態賦值屬性--即把is_load()中的例項化的物件賦值給控制器的本地屬性,達到CI超級類的目的
$this->$var =& load_class($class);
}
//載入Loader類
$this->load =& load_class('Loader', 'core');
//初始化(autolaod陣列之指定的類,以及config設定)
$this->load->initialize();
log_message('info', 'Controller Class Initialized');
}
// --------------------------------------------------------------------
/**
*獲得CI的單例項
* Get the CI singleton
*
* @static
* @return object
*/
public static function &get_instance()
{
return self::$instance;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30221425/viewspace-2095836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vue原始碼分析系列之入口檔案分析Vue原始碼
- 鴻蒙輕核心原始碼分析:檔案系統LittleFS鴻蒙原始碼
- workerman 框架原始碼核心分析和註解框架原始碼
- PHP JWT CI 框架PHPJWT框架
- PHP底層核心原始碼之變數PHP原始碼變數
- PHP檔案分享系統原始碼PHP原始碼
- MyBatis原始碼分析之核心處理層MyBatis原始碼
- Linux核心原始碼分析之set_arch (一)Linux原始碼
- Linux核心原始碼分析之setup_arch (四)Linux原始碼
- Linux核心原始碼分析之setup_arch (三)Linux原始碼
- Linux核心原始碼分析之setup_arch (二)Linux原始碼
- YARN 核心原始碼分析Yarn原始碼
- 併發程式設計之 SynchronousQueue 核心原始碼分析程式設計原始碼
- workerman 網路框架原始碼核心分析和註解 over 篇框架原始碼
- Springboot 載入配置檔案原始碼分析Spring Boot原始碼
- MJRefresh原始碼框架分析原始碼框架
- Abp原始碼分析之虛擬檔案系統Volo.Abp.VirtualFileSystem原始碼
- 【核心檔案系統】原始碼閱讀stat.h原始碼
- 【PHP7原始碼分析】PHP7原始碼研究之淺談Zend虛擬機器PHP原始碼虛擬機
- Spring Security系列之核心過濾器原始碼分析(四)Spring過濾器原始碼
- Guava 原始碼分析之 EventBus 原始碼分析Guava原始碼
- Android 原始碼分析之 AsyncTask 原始碼分析Android原始碼
- 專案中常用的 .env 檔案原理原始碼分析原始碼
- Go語言中介軟體框架 Negroni 的靜態檔案處理原始碼分析Go框架原始碼
- Uber RIBs框架原始碼分析框架原始碼
- 微前端框架 之 qiankun 從入門到原始碼分析前端框架原始碼
- 入口檔案開始,分析Vue原始碼實現Vue原始碼
- Spring原始碼分析——spring原始碼核心方法refresh()介紹Spring原始碼
- PHP單一檔案入口框架簡析PHP框架
- 自研 PHP 框架 1.1_index.php 檔案說明PHP框架Index
- 自研 PHP 框架 1.0_index.php 檔案說明PHP框架Index
- Laravel核心解讀–Cookie原始碼分析LaravelCookie原始碼
- Spring IOC容器核心流程原始碼分析Spring原始碼
- Java 集合框架------ArrayList原始碼分析Java框架原始碼
- Uncode-Schedule框架原始碼分析框架原始碼
- Spring Boot核心技術之Restful對映以及原始碼的分析Spring BootREST原始碼
- Mac 下使用 clion 除錯 PHP 核心原始碼Mac除錯PHP原始碼
- DIY 實現 ThinkPHP 核心框架 (二)入口檔案PHP框架
- 原始碼分析之 HashMap原始碼HashMap