CI框架源码翻阅-Lang.php
CI框架源码阅读---------Lang.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * CodeIgniter * * An open source application development framework for PHP 5.1.6 or newer * * @package CodeIgniter * @author ExpressionEngine Dev Team * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. * @license http://codeigniter.com/user_guide/license.html * @link http://codeigniter.com * @since Version 1.0 * @filesource */ // ------------------------------------ /** * Language Class * 官方使用手册:http://codeigniter.org.cn/user_guide/libraries/language.html * @package CodeIgniter * @subpackage Libraries * @category Language * @author ExpressionEngine Dev Team * @link http://codeigniter.com/user_guide/libraries/language.html */ class CI_Lang { /** * List of translations * 语言包列表 * @var array */ var $language = array(); /** * List of loaded language files * 已经被加载的语言包列表 * @var array */ var $is_loaded = array(); /** * Constructor * * @access public */ function __construct() { log_message('debug', "Language Class Initialized"); } // -------------------------------- /** * Load a language file * 加载语言包 * @access public * @param mixed the name of the language file to be loaded. Can be an array * 要被加载的语言文件。 * @param string the language (english, etc.) 要使用的语言 * @param bool return loaded array of translations 直接返回语言包数组 * 不加入到$this->is_loaded和$this->language中去 * @param bool add suffix to $langfile 文件是否添加后缀 * @param string alternative path to look for language file 语言包文件的自定义路径 * @return mixed */ function load($langfile = '', $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '') { // langfile 文件的.php 后缀去掉 $langfile = str_replace('.php', '', $langfile); // 判断需不需要添加后缀如果需要 // 将_lang. 去掉并再langfile后面添加_lang if ($add_suffix == TRUE) { $langfile = str_replace('_lang.', '', $langfile).'_lang'; } // 为langfile添加.php后缀 $langfile .= '.php'; // 判断当前文件是否被加载过 if (in_array($langfile, $this->is_loaded, TRUE)) { return; } // 获取配置文件的数据 $config =& get_config(); // 如果要使用的语言为空 // 那么 我们将从$config中获取 if ($idiom == '') { $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language']; $idiom = ($deft_lang == '') ? 'english' : $deft_lang; } // Determine where the language file is and load it // 在自定义路径下寻找语言包并加载 if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile)) { include($alt_path.'language/'.$idiom.'/'.$langfile); } else { // 如果自定义路径下没找到调用get_instance()->load->get_package_paths(TRUE) // 在包路径下寻找 // get_package_paths这个函数在loader.php中 $found = FALSE; foreach (get_instance()->load->get_package_paths(TRUE) as $package_path) { if (file_exists($package_path.'language/'.$idiom.'/'.$langfile)) { include($package_path.'language/'.$idiom.'/'.$langfile); $found = TRUE; break; } } // 如果还没找到就只能报错了 // if ($found !== TRUE) { show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile); } } if ( ! isset($lang)) { log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile); return; } if ($return == TRUE) { return $lang; } $this->is_loaded[] = $langfile; $this->language = array_merge($this->language, $lang); unset($lang); log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile); return TRUE; } // -------------------------------- /** * Fetch a single line of text from the language array * 获取一行文本 * @access public * @param string $line the language line * @return string */ function line($line = '') { /* * $this->language 的样子 * $lang['error_email_missing'] = "You must submit an email address"; * $lang['error_url_missing'] = "You must submit a URL"; * $lang['error_username_missing'] = "You must submit a username"; */ $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line]; // Because killer robots like unicorns! if ($value === FALSE) { log_message('error', 'Could not find the language line "'.$line.'"'); } return $value; } } // END Language Class /* End of file Lang.php */ /* Location: ./system/core/Lang.php */

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

C語言return的用法有:1、對於傳回值類型為void的函數,可以使用return語句來提前結束函數的執行;2、對於傳回值型別不為void的函數,return語句的作用是將函數的執行結果傳回給呼叫者;3、提前結束函數的執行,在函數內部,我們可以使用return語句來提前結束函數的執行,即使函數並沒有回傳值。

如何在CodeIgniter中實現自訂中間件引言:在現代的Web開發中,中間件在應用程式中起著至關重要的作用。它們可以用來執行在請求到達控制器之前或之後執行一些共享的處理邏輯。 CodeIgniter作為一個流行的PHP框架,也支持中間件的使用。本文將介紹如何在CodeIgniter中實作自訂中間件,並提供一個簡單的程式碼範例。中間件概述:中間件是一種在請求

System76 最近以其Cosmic 桌面環境引起了轟動,該環境計劃於8 月8 日與Pop!_OS 的下一個主要alpha 版本一起發布。 Cosmic DE開發商

原始碼:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}#輸出上述程式碼的輸出可以簡單地得出結論:return在finally之前執行,我們來看下字節碼層面上發生了什麼事情。下面截取case1方法的部分字節碼,並且對照源碼,將每個指令的含義註釋在

CodeIgniter中間件:加速應用程式的反應速度和頁面渲染概述:隨著網頁應用程式的複雜性和互動性不斷增長,開發人員需要使用更有效率和可擴展的解決方案來提高應用程式的效能和反應速度。 CodeIgniter(CI)是一種基於PHP的輕量級框架,提供了許多有用的功能,其中之一就是中間件。中間件是在請求到達控制器之前或之後執行的一系列任務。這篇文章將介紹如何使用

在CodeIgniter框架中使用資料庫查詢建構器(QueryBuilder)的方法引言:CodeIgniter是一個輕量級的PHP框架,它提供了許多功能強大的工具和函式庫,方便開發人員進行Web應用程式開發。其中一個令人印象深刻的功能是資料庫查詢建構器(QueryBuilder),它提供了一種簡潔而強大的方法來建立和執行資料庫查詢語句。本文將介紹如何在Co

隨著行動互聯網的發展,即時通訊變得越來越重要,越來越普及。對許多企業而言,即時聊天更像是一種通訊服務,提供便利的溝通方式,可以快速有效地解決業務方面的問題。基於此,本文將介紹如何使用PHP框架CodeIgniter開發一個即時聊天應用程式。了解CodeIgniter框架CodeIgniter是一個輕量級的PHP框架,提供了一系列的簡單的工具和函式庫,幫助開發者快速

隨著Web應用程式的不斷發展,更加快速和有效率地開發應用程式變得非常重要。並且,隨著RESTfulAPI在網路應用程式中的廣泛應用,對於開發人員來說,必須理解如何建立和實作RESTfulAPI。在本文中,我們將討論如何使用CodeIgniter框架實現MVC模式和RESTfulAPI。 MVC模式簡介MVC(Model-Vie
