0

0

CI框架源码翻阅-Config.php

php中文网

php中文网

发布时间:2016-06-13 11:16:28

|

1155人浏览过

|

来源于php中文网

原创

CI框架源码阅读---------Config.php
文件地址:./system/core/Config.php
主要作用:管理配置
1.成员属性$config 所有已加载配置的值的列表
2.成员属性$is_loaded 所有加载配置文件的列表
3.成员属性$_config_paths 当需要加载配置文件的时候搜索路径的列表
4.__construct() 构造方法程序会首先自动执行这个方法
它所做的内容主要有两个 a)获取配置赋值给成员属性$config
b)设置配置中的base_url
5.load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)
加载配置文件
$file 是你自定义的配置文件的文件名,这个文件名没有 .php 的扩展名. 
$use_sections 如果你需要加载多个自定义配置文件,一般情况下它们会被合并成一个数组。然而,如果在不同的配置文件中存在同名的索引,那么会发生冲突。为了避免这个问题,你可以把第二个参数设置为 TRUE ,这可以使每个配置文件的内容存储在一个单独的数组中,数组的索引就是配置文件的文件名。
$fail_gracefully允许屏蔽当配置文件不存在时产生的错误信息:
(0)过滤并设置$file 变量
(1)初始化$founf 为FALSE 用于判断文件是否存在
(2)初始化$loaded为FALSE 用于判断文件是否被加载
(3)检测文件路径如果有环境变量添加环境变量
(4)进入foreach遍历文件路径,并查找文件是否被加载和存在
(5)如果文件不存在跳出foreach循环
(6)加载文件
(7)判断$config是否存在,这个$config 应该是加载的文件中定义的
(8)判断$use_sections 如果为真则将使每个配置文件的内容存储在一个单独的数组中,数组的索引就是配置文件的文件名。
  如果为假则所有配置文件会被合并成一个数组
(9)将文件添加进is_loaded数组中,并销毁$config
(10)$loaded 设置为true log记录 跳出循环
(11)如果loaded为false并且$fail_gracefully不等于true 显示错误日志


6.item() 获取一个配置项
$item 配置项的名字
$index 如果配置是一个数组的时候,这一项是数组索引名字
(1)判断index是否为空
(2)如果index为空,判断$this->config[$item]是否存在,如果不存在返回,存在,赋值给$pref
(3)如果index不为空,判断$this->config[$index]是否存在,判断$this->config[$index][$item]是否存在,将$this->config[$index][$item]赋值给$pref
(4)返回$pref


7.slash_item() 获取一个配置项并添加/
$item 配置项的名字
(1)判断配置项是否存在不存在返回false
(2)判断配置项是否为空如果是空返回''
(3)在配置值的后面添加/并返回。


8.site_url() 该函数得到你网站的 URL,其中包含了你在 config 文件中设置的 "index" 的值。
$uri uri字符串就是访问路径所带的参数
(1) 如果$uri = '' 返回由base_url和index_page组成的url
(2) 判断$this->item('enable_query_strings')真假,并返回不同形式的地址。(这一项是在application/config/config.php文件中配置的。用来区分传参方式,如果为false就是默认的传参方式example.com/who/what/where/。如果为true就是 example.com/index.php?c=controller&m=function这样的传参方式。)

9.base_url() 该函数返回站点的根 URL,可以在这个函数后拼接一个 URL 路径,用以生成 CSS 或图片文件的 URL。

10._uri_string() 构建uri串让site_url(),base_url()两个函数使用。


11.system_url() 该函数得到 system 文件夹的 URL。


12.set_item()  设置一个配置项


13._assign_to_config() 设置多个配置项(以数组的形式key是要设置的配置项的名字,value 是配置项的值)


源码:

外贸多语言保健品化妆品独立站源码(内置ai智能翻译)2.0.7
外贸多语言保健品化妆品独立站源码(内置ai智能翻译)2.0.7

这款 AI 智能翻译外贸多语言保健品化妆品独立站源码是zancms专为外贸化妆品企业量身定制。它由 zancms 外贸独立站系统 基于化妆品出口企业的独特需求进行研发设计,对各类智能产品企业的出口业务拓展同样大有裨益。其具备显著的语言优势,采用英文界面呈现,且内置智能 AI 翻译功能,在获得商业授权后更可开启多语言模式,充分满足不同地区用户的语言需求,并且整个网站的架构与布局完全依照国外用户的阅读

下载

config =& get_config();		log_message('debug', "Config Class Initialized");		// Set the base_url automatically if none was provided 假如		if ($this->config['base_url'] == '')		{			if (isset($_SERVER['HTTP_HOST']))			{				$base_url = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http';				$base_url .= '://'. $_SERVER['HTTP_HOST'];				$base_url .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);			}			else			{				$base_url = 'http://localhost/';			}			$this->set_item('base_url', $base_url);		}	}	// --------------------------------	/**	 * Load Config File	 *	 * @access	public	 * @param	string	the config file name	 * @param   boolean  if configuration values should be loaded into their own section	 * @param   boolean  true if errors should just return false, false if an error message should be displayed	 * @return	boolean	if the file was loaded correctly	 */	function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE)	{		$file = ($file == '') ? 'config' : str_replace('.php', '', $file);		$found = FALSE;		$loaded = FALSE;				$check_locations = defined('ENVIRONMENT')			? array(ENVIRONMENT.'/'.$file, $file)			: array($file);		foreach ($this->_config_paths as $path)		{			foreach ($check_locations as $location)			{				$file_path = $path.'config/'.$location.'.php';				if (in_array($file_path, $this->is_loaded, TRUE))				{					$loaded = TRUE;					continue 2;				}				if (file_exists($file_path))				{					$found = TRUE;					break;				}			}			if ($found === FALSE)			{				continue;			}			include($file_path);			if ( ! isset($config) OR ! is_array($config))			{				if ($fail_gracefully === TRUE)				{					return FALSE;				}				show_error('Your '.$file_path.' file does not appear to contain a valid configuration array.');			}			if ($use_sections === TRUE)			{				if (isset($this->config[$file]))				{					$this->config[$file] = array_merge($this->config[$file], $config);				}				else				{					$this->config[$file] = $config;				}			}			else			{				$this->config = array_merge($this->config, $config);			}			$this->is_loaded[] = $file_path;			unset($config);			$loaded = TRUE;			log_message('debug', 'Config file loaded: '.$file_path);			break;		}		if ($loaded === FALSE)		{			if ($fail_gracefully === TRUE)			{				return FALSE;			}			show_error('The configuration file '.$file.'.php does not exist.');		}		return TRUE;	}	// --------------------------------	/**	 * Fetch 取得,拿来 a config file item	 *	 *	 * @access	public	 * @param	string	the config item name	 * @param	string	the index name	 * @param	bool	 * @return	string	 */	function item($item, $index = '')	{		if ($index == '')		{			if ( ! isset($this->config[$item]))			{				return FALSE;			}			$pref = $this->config[$item];		}		else		{			if ( ! isset($this->config[$index]))			{				return FALSE;			}			if ( ! isset($this->config[$index][$item]))			{				return FALSE;			}			$pref = $this->config[$index][$item];		}		return $pref;	}	// --------------------------------	/**	 * Fetch a config file item - adds slash after item (if item is not empty)	 *	 * @access	public	 * @param	string	the config item name	 * @param	bool	 * @return	string	 */	function slash_item($item)	{		if ( ! isset($this->config[$item]))		{			return FALSE;		}		if( trim($this->config[$item]) == '')		{			return '';		}		return rtrim($this->config[$item], '/').'/';	}	// --------------------------------	/**	 * Site URL	 * Returns base_url . index_page [. uri_string]	 *	 * @access	public	 * @param	string	the URI string	 * @return	string	 */	function site_url($uri = '')	{		if ($uri == '')		{			return $this->slash_item('base_url').$this->item('index_page');		}		if ($this->item('enable_query_strings') == FALSE)		{			$suffix = ($this->item('url_suffix') == FALSE) ? '' : $this->item('url_suffix');			return $this->slash_item('base_url').$this->slash_item('index_page').$this->_uri_string($uri).$suffix;		}		else		{			return $this->slash_item('base_url').$this->item('index_page').'?'.$this->_uri_string($uri);		}	}	// -------------------------	/**	 * Base URL	 * Returns base_url [. uri_string]	 *	 * @access public	 * @param string $uri	 * @return string	 */	function base_url($uri = '')	{		return $this->slash_item('base_url').ltrim($this->_uri_string($uri), '/');	}	// -------------------------	/**	 * Build URI string for use in Config::site_url() and Config::base_url()	 *	 * @access protected	 * @param  $uri	 * @return string	 */	protected function _uri_string($uri)	{		if ($this->item('enable_query_strings') == FALSE)		{			if (is_array($uri))			{				$uri = implode('/', $uri);			}			$uri = trim($uri, '/');		}		else		{			if (is_array($uri))			{				$i = 0;				$str = '';				foreach ($uri as $key => $val)				{					$prefix = ($i == 0) ? '' : '&';					$str .= $prefix.$key.'='.$val;					$i++;				}				$uri = $str;			}		}	    return $uri;	}	// --------------------------------	/**	 * System URL	 *	 * @access	public	 * @return	string	 */	function system_url()	{		$x = explode("/", preg_replace("|/*(.+?)/*$|", "\\1", BASEPATH));		return $this->slash_item('base_url').end($x).'/';	}	// --------------------------------	/**	 * Set a config file item	 *	 * @access	public	 * @param	string	the config item key	 * @param	string	the config item value	 * @return	void	 */	function set_item($item, $value)	{		$this->config[$item] = $value;	}	// --------------------------------	/**	 * Assign to Config	 *	 * This function is called by the front controller (CodeIgniter.php)	 * after the Config class is instantiated.  It permits config items	 * to be assigned or overriden by variables contained in the index.php file	 *	 * @access	private	 * @param	array	 * @return	void	 */	function _assign_to_config($items = array())	{		if (is_array($items))		{			foreach ($items as $key => $val)			{				$this->set_item($key, $val);			}		}	}}// END CI_Config class/* End of file Config.php *//* Location: ./system/core/Config.php */


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

33

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

18

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

46

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

91

2025.12.26

b站看视频入口合集
b站看视频入口合集

本专题整合了b站哔哩哔哩相关入口合集,阅读下面的文章查看更多入口。

283

2025.12.26

俄罗斯搜索引擎yandex入口汇总
俄罗斯搜索引擎yandex入口汇总

本专题整合了俄罗斯搜索引擎yandex相关入口合集,阅读下面的文章查看更多入口。

370

2025.12.26

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

35

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

25

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

72

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
JavaScript高级框架设计视频教程
JavaScript高级框架设计视频教程

共22课时 | 3.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号