【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【PHP】CI框架原始碼分析核心檔案之Input.phpPHP框架原始碼
- 【PHP】CI框架原始碼分析核心檔案之Loader.phpPHP框架原始碼
- 【PHP】CI框架原始碼分析核心檔案之Utf8.phpPHP框架原始碼
- 【PHP】CI框架原始碼DB.php(資料庫類)PHP框架原始碼資料庫
- vue原始碼分析系列之入口檔案分析Vue原始碼
- 鴻蒙輕核心原始碼分析:檔案系統LittleFS鴻蒙原始碼
- PHP JWT CI 框架PHPJWT框架
- workerman 框架原始碼核心分析和註解框架原始碼
- PHP檔案上傳原始碼分析(RFC1867)PHP原始碼
- PHP底層核心原始碼之變數PHP原始碼變數
- MyBatis原始碼分析之核心處理層MyBatis原始碼
- PHP檔案分享系統原始碼PHP原始碼
- CI框架原始碼解讀--ROUTE和URL類框架原始碼
- CI框架原始碼閱讀筆記6 擴充套件鉤子 Hook.php框架原始碼筆記套件HookPHP
- YARN 核心原始碼分析Yarn原始碼
- mmap核心原始碼分析原始碼
- 爬蟲框架Webmagic原始碼分析之Spider爬蟲框架Web原始碼IDE
- workerman 網路框架原始碼核心分析和註解 over 篇框架原始碼
- Linux核心原始碼分析之setup_arch (四)Linux原始碼
- Linux核心原始碼分析之setup_arch (二)Linux原始碼
- Linux核心原始碼分析之set_arch (一)Linux原始碼
- Linux核心原始碼分析之setup_arch (三)Linux原始碼
- 併發程式設計之 SynchronousQueue 核心原始碼分析程式設計原始碼
- ThinkPHP3.1.3原始碼分析(一) 入口檔案分析PHP原始碼
- NIO框架之MINA原始碼解析(二):mina核心引擎框架原始碼
- paypal之nodejs 框架 Kraken-js 原始碼分析NodeJS框架原始碼
- 【集合框架】JDK1.8原始碼分析之HashMap(一)框架JDK原始碼HashMap
- 【集合框架】JDK1.8原始碼分析之ArrayList(六)框架JDK原始碼
- 【集合框架】JDK1.8原始碼分析之TreeMap(五)框架JDK原始碼
- Guava 原始碼分析之 EventBus 原始碼分析Guava原始碼
- 【PHP7原始碼分析】PHP7原始碼研究之淺談Zend虛擬機器PHP原始碼虛擬機
- 【核心檔案系統】原始碼閱讀stat.h原始碼
- MJRefresh原始碼框架分析原始碼框架
- Android 原始碼分析之 AsyncTask 原始碼分析Android原始碼
- 專案中常用的 .env 檔案原理原始碼分析原始碼
- 【集合框架】JDK1.8原始碼分析之LinkedHashMap(二)框架JDK原始碼HashMap
- 【集合框架】JDK1.8原始碼分析之Collections && Arrays(十)框架JDK原始碼
- 【集合框架】JDK1.8原始碼分析之LinkedList(七)框架JDK原始碼