YiiBase
鍖 | system |
---|---|
缁ф壙 | class YiiBase |
瀛愮被 | Yii |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: YiiBase.php 3564 2012-02-13 01:29:03Z qiang.xue $ |
婧愮爜 | framework/YiiBase.php |
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
classMap | array | 鐢ㄤ簬Yii鐨勮嚜鍔ㄥ姞杞界被鍦板浘. | YiiBase |
enableIncludePath | boolean | 鏄惁瑕佷緷闈燩HP鍖呭惈璺緞鍒拌嚜鍔ㄥ姞杞界被鏂囦欢銆傞粯璁や负true銆 濡傛灉浣犵殑瀹夸富鐜涓嶅厑璁镐綘鏀瑰彉PHP鍖呭惈璺緞锛屽彲浠ヨ缃负false銆 鎴栬呬綘鎯虫坊鍔犲彟澶栫殑鑷姩鍔犺浇鍣ㄥ埌榛樿鐨刌ii鑷姩鍔犺浇鍣ㄣ | YiiBase |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
app() | 杩斿洖搴旂敤绋嬪簭鍗曚緥锛屽鏋滃崟渚嬭繕娌″垱寤轰负null銆 | YiiBase |
autoload() | 绫昏嚜鍔ㄥ姞杞藉櫒銆 | YiiBase |
beginProfile() | 鏍囪鍒嗘瀽涓鍧椾唬鐮佺殑寮濮嬩綅缃 | YiiBase |
createApplication() | 鍒涘缓涓涓寚瀹氱被鐨勫簲鐢ㄧ▼搴忋 | YiiBase |
createComponent() | 鍒涘缓涓涓璞″苟鏍规嵁鎸囧畾鐨勯厤缃垵濮嬪寲銆 | YiiBase |
createConsoleApplication() | 鍒涘缓涓涓帶鍒跺彴搴旂敤绋嬪簭瀹炰緥銆 | YiiBase |
createWebApplication() | 鍒涘缓涓涓猈eb搴旂敤绋嬪簭瀹炰緥銆 | YiiBase |
endProfile() | 鏍囪鍒嗘瀽涓鍧椾唬鐮佺殑缁撴潫浣嶇疆銆 | YiiBase |
getFrameworkPath() | 杩斿洖妗嗘灦鐨勮矾寰 | YiiBase |
getLogger() | 杩斿洖鏃ュ織淇℃伅鍣 | YiiBase |
getPathOfAlias() | 缈昏瘧涓涓埆鍚嶄负涓涓枃浠惰矾寰勩 | YiiBase |
getVersion() | 杩斿洖杩斿洖Yii framework鐗堟湰鍙 | YiiBase |
import() | 瀵煎叆涓涓被鎴栦竴涓洰褰曘 | YiiBase |
log() | 鍐欏叆涓鏉℃棩蹇椾俊鎭 | YiiBase |
powered() | 杩斿洖涓涓彲浠ュ湪缃戦〉涓樉绀虹殑Powered-by-Yii瀛楃涓蹭俊鎭 | YiiBase |
registerAutoloader() | 娉ㄥ唽涓涓柊鐨勭被鑷姩鍔犺浇鍣ㄣ | YiiBase |
setApplication() | 鍦ㄧ被闈欐佹垚鍛樹腑瀛樺偍搴旂敤绋嬪簭瀹炰緥銆 | YiiBase |
setLogger() | 璁剧疆鏃ュ織璁板綍鍣ㄥ璞° | YiiBase |
setPathOfAlias() | 鍒涘缓涓涓矾寰勫埆鍚嶃 | YiiBase |
t() | 缈昏瘧涓鏉′负鎸囧畾璇█鐨勪俊鎭 | YiiBase |
trace() | 鍐欏叆涓鏉¤窡韪俊鎭 | YiiBase |
灞炴ц缁
鐢ㄤ簬Yii鐨勮嚜鍔ㄥ姞杞界被鍦板浘. 鏁扮粍涓殑閿槸绫诲悕锛屾暟缁勪腑鐨勫兼槸鐩稿簲绫绘枃浠剁殑璺緞銆
鏄惁瑕佷緷闈燩HP鍖呭惈璺緞鍒拌嚜鍔ㄥ姞杞界被鏂囦欢銆傞粯璁や负true銆 濡傛灉浣犵殑瀹夸富鐜涓嶅厑璁镐綘鏀瑰彉PHP鍖呭惈璺緞锛屽彲浠ヨ缃负false銆 鎴栬呬綘鎯虫坊鍔犲彟澶栫殑鑷姩鍔犺浇鍣ㄥ埌榛樿鐨刌ii鑷姩鍔犺浇鍣ㄣ
鏂规硶璇︾粏
public static CApplication app()
| ||
{return} | CApplication | 搴旂敤绋嬪簭鍗曚緥銆傚鏋滃崟渚嬭繕娌″垱寤轰负null銆 |
杩斿洖搴旂敤绋嬪簭鍗曚緥锛屽鏋滃崟渚嬭繕娌″垱寤轰负null銆
public static boolean autoload(string $className)
| ||
$className | string | 绫诲悕 |
{return} | boolean | 鏄惁璇ョ被宸茬粡琚垚鍔熻浇鍏 |
public static function autoload($className)
{
// use include so that the error PHP file may appear
if(isset(self::$classMap[$className]))
include(self::$classMap[$className]);
else if(isset(self::$_coreClasses[$className]))
include(YII_PATH.self::$_coreClasses[$className]);
else
{
// include class file relying on include_path
if(strpos($className,'\\')===false) // class without namespace
{
if(self::$enableIncludePath===false)
{
foreach(self::$_includePaths as $path)
{
$classFile=$path.DIRECTORY_SEPARATOR.$className.'.php';
if(is_file($classFile))
{
include($classFile);
break;
}
}
}
else
include($className.'.php');
}
else // class name with namespace in PHP 5.3
{
$namespace=str_replace('\\','.',ltrim($className,'\\'));
if(($path=self::getPathOfAlias($namespace))!==false)
include($path.'.php');
else
return false;
}
return class_exists($className,false) || interface_exists($className,false);
}
return true;
}
绫昏嚜鍔ㄥ姞杞藉櫒銆 杩欎釜鏂规硶鏄彁渚涚粰__autoload()榄旀湳鏂规硶浣跨敤銆
public static void beginProfile(string $token, string $category='application')
| ||
$token | string | 浠g爜鍧楁爣璁 |
$category | string | 鏃ュ織淇℃伅绫诲埆 |
public static function beginProfile($token,$category='application')
{
self::log('begin:'.$token,CLogger::LEVEL_PROFILE,$category);
}
鏍囪鍒嗘瀽涓鍧椾唬鐮佺殑寮濮嬩綅缃 鏍囪寮濮嬪垎鏋愪竴鍧椾唬鐮併傚畠蹇呴』鏈変竴涓悓鏍风殑endProfile()鍖归厤銆 begin-鍜宔nd-璋冪敤蹇呴』鏄纭殑宓屽锛屼緥濡傦紝
Yii::beginProfile('block1'); Yii::beginProfile('block2'); Yii::endProfile('block2'); Yii::endProfile('block1');涓嬮潰鐨勮鍙ユ槸鏃犳晥鐨勶細
Yii::beginProfile('block1'); Yii::beginProfile('block2'); Yii::endProfile('block1'); Yii::endProfile('block2');
鍙傝
public static mixed createApplication(string $class, mixed $config=NULL)
| ||
$class | string | 搴旂敤绋嬪簭绫诲悕 |
$config | mixed | 搴旂敤绋嬪簭閰嶇疆銆 杩欎釜鍙傛暟灏嗕細浼犻掔粰搴旂敤绋嬪簭绫荤殑鏋勯犲嚱鏁般 |
{return} | mixed | 杩欎釜搴旂敤绋嬪簭瀹炰緥 |
public static function createApplication($class,$config=null)
{
return new $class($config);
}
鍒涘缓涓涓寚瀹氱被鐨勫簲鐢ㄧ▼搴忋
public static mixed createComponent(mixed $config)
| ||
$config | mixed | 閰嶇疆锛屽畠鍙兘鏄竴涓瓧绗︿覆鎴栨暟缁勩 |
{return} | mixed | 鍒涘缓鍚庣殑瀵硅薄 |
public static function createComponent($config)
{
if(is_string($config))
{
$type=$config;
$config=array();
}
else if(isset($config['class']))
{
$type=$config['class'];
unset($config['class']);
}
else
throw new CException(Yii::t('yii','Object configuration must be an array containing a "class" element.'));
if(!class_exists($type,false))
$type=Yii::import($type,true);
if(($n=func_num_args())>1)
{
$args=func_get_args();
if($n===2)
$object=new $type($args[1]);
else if($n===3)
$object=new $type($args[1],$args[2]);
else if($n===4)
$object=new $type($args[1],$args[2],$args[3]);
else
{
unset($args[0]);
$class=new ReflectionClass($type);
// Note: ReflectionClass::newInstanceArgs() is available for PHP 5.1.3+
// $object=$class->newInstanceArgs($args);
$object=call_user_func_array(array($class,'newInstance'),$args);
}
}
else
$object=new $type;
foreach($config as $key=>$value)
$object->$key=$value;
return $object;
}
鍒涘缓涓涓璞″苟鏍规嵁鎸囧畾鐨勯厤缃垵濮嬪寲銆
鎸囧畾鐨勯厤缃彲浠ユ槸涓涓瓧绗︿覆鎴栦竴涓暟缁勩
濡傛灉鏄墠鑰咃紝璇ュ瓧绗︿覆琚綋浣滐紙鎸囧畾涓涓被鍚嶇殑锛夊璞$被鍨嬶紝鎴
绫荤殑璺緞鍒悕銆
濡傛灉鏄悗鑰咃紝鈥榗lass鈥欏厓绱犲褰撲綔瀵硅薄绫诲瀷瀵瑰緟锛
骞朵笖鏁扮粍涓叾浣欑殑閿煎琚敤浣滃垵濮嬪寲
鐩稿簲鐨勫璞″睘鎬с
浼犻掔粰杩欎釜鏂规硶鐨勪换浣曢澶栫殑鍙傛暟
灏嗕紶閫掔粰灏嗚鍒涘缓鐨勫璞$殑鏋勯犳柟娉曘
public static CConsoleApplication createConsoleApplication(mixed $config=NULL)
| ||
$config | mixed | 搴旂敤绋嬪簭閰嶇疆銆 濡傛灉鏄竴涓瓧绗︿覆锛屽畠灏嗚褰撲綔鏂囦欢鐨勮矾寰勶紝鍏朵腑鍖呭惈閰嶇疆锛 濡傛灉鏄竴涓暟缁勶紝瀹冨皢琚綋浣滃叿浣撶殑閰嶇疆淇℃伅銆 璇峰姟蹇呭湪閰嶇疆鏂囦欢涓寚瀹basePath灞炴э紝 閫氬父搴旇鎸囧悜鐩綍鍖呭惈鎵鏈夌殑搴旂敤绋嬪簭閫昏緫锛屾ā鏉垮拰鏁版嵁銆 濡傛灉娌℃湁锛岄偅涔堥粯璁ゅ皢鎸囧畾涓衡榩rotected鈥欑洰褰曘 |
{return} | CConsoleApplication |
public static function createConsoleApplication($config=null)
{
return self::createApplication('CConsoleApplication',$config);
}
鍒涘缓涓涓帶鍒跺彴搴旂敤绋嬪簭瀹炰緥銆
public static CWebApplication createWebApplication(mixed $config=NULL)
| ||
$config | mixed | 搴旂敤绋嬪簭閰嶇疆銆 濡傛灉鏄竴涓瓧绗︿覆锛屽畠灏嗚褰撲綔鏂囦欢鐨勮矾寰勶紝鍏朵腑鍚湁閰嶇疆锛 濡傛灉鏄竴涓暟缁勶紝瀹冨皢琚綋浣滃叿浣撶殑閰嶇疆淇℃伅銆 璇峰姟蹇呭湪閰嶇疆鏂囦欢涓寚瀹basePath灞炴э紝 閫氬父搴旇鎸囧悜鐩綍鍖呭惈鎵鏈夌殑搴旂敤绋嬪簭閫昏緫銆佹ā鏉垮拰鏁版嵁銆 濡傛灉娌℃湁锛岄偅涔堥粯璁ゅ皢鎸囧畾涓衡榩rotected鈥欑洰褰曘 |
{return} | CWebApplication |
public static function createWebApplication($config=null)
{
return self::createApplication('CWebApplication',$config);
}
鍒涘缓涓涓猈eb搴旂敤绋嬪簭瀹炰緥銆
public static void endProfile(string $token, string $category='application')
| ||
$token | string | 浠g爜鍧楁爣璁 |
$category | string | 鏃ュ織淇℃伅绫诲埆 |
public static function endProfile($token,$category='application')
{
self::log('end:'.$token,CLogger::LEVEL_PROFILE,$category);
}
鏍囪鍒嗘瀽涓鍧椾唬鐮佺殑缁撴潫浣嶇疆銆 鏍囪鍒嗘瀽涓鍧椾唬鐮佺粨鏉熶綅缃傚畠蹇呴』鏈変竴涓悓鏍风殑beginProfile()鍖归厤銆
鍙傝
public static string getFrameworkPath()
| ||
{return} | string | 妗嗘灦鐨勮矾寰 |
public static CLogger getLogger()
| ||
{return} | CLogger | 鏃ュ織淇℃伅鍣 |
public static function getLogger()
{
if(self::$_logger!==null)
return self::$_logger;
else
return self::$_logger=new CLogger;
}
public static mixed getPathOfAlias(string $alias)
| ||
$alias | string | 鍒悕锛堜緥濡傦細system.web.CController锛 |
{return} | mixed | 鍒悕瀵瑰簲鐨勬枃浠惰矾寰勶紝濡傛灉鍚嶇О鏃犳晥杩斿洖false銆 |
public static function getPathOfAlias($alias)
{
if(isset(self::$_aliases[$alias]))
return self::$_aliases[$alias];
else if(($pos=strpos($alias,'.'))!==false)
{
$rootAlias=substr($alias,0,$pos);
if(isset(self::$_aliases[$rootAlias]))
return self::$_aliases[$alias]=rtrim(self::$_aliases[$rootAlias].DIRECTORY_SEPARATOR.str_replace('.',DIRECTORY_SEPARATOR,substr($alias,$pos+1)),'*'.DIRECTORY_SEPARATOR);
else if(self::$_app instanceof CWebApplication)
{
if(self::$_app->findModule($rootAlias)!==null)
return self::getPathOfAlias($alias);
}
}
return false;
}
缈昏瘧涓涓埆鍚嶄负涓涓枃浠惰矾寰勩 娉ㄦ剰锛岃繖涓柟娉曚笉鑳戒繚璇佽繑鍥炵殑鏂囦欢璺緞瀛樺湪銆 瀹冧粎妫娴嬪埆鍚嶇殑鏍圭洰褰曟槸鍚︽湁鏁堛
public static string getVersion()
| ||
{return} | string | 杩斿洖Yii framework鐗堟湰鍙 |
public static string import(string $alias, boolean $forceInclude=false)
| ||
$alias | string | 瀵煎叆鐨勮矾寰勫埆鍚 |
$forceInclude | boolean | 鏄惁绔嬪嵆鍖呭惈绫绘枃浠躲 濡傛灉涓篺lase锛屽垯绫绘枃浠朵粎鍦ㄨ浣跨敤鏃跺寘鍚 杩欎釜鍙傛暟浠呭綋浣跨敤涓涓被鐨勮矾寰勫埆鍚嶆椂鎵嶄細鐢ㄥ埌銆 |
{return} | string | 鍒悕鎵鎸囩殑绫诲悕鎴栫洰褰 |
public static function import($alias,$forceInclude=false)
{
if(isset(self::$_imports[$alias])) // previously imported
return self::$_imports[$alias];
if(class_exists($alias,false) || interface_exists($alias,false))
return self::$_imports[$alias]=$alias;
if(($pos=strrpos($alias,'\\'))!==false) // a class name in PHP 5.3 namespace format
{
$namespace=str_replace('\\','.',ltrim(substr($alias,0,$pos),'\\'));
if(($path=self::getPathOfAlias($namespace))!==false)
{
$classFile=$path.DIRECTORY_SEPARATOR.substr($alias,$pos+1).'.php';
if($forceInclude)
{
if(is_file($classFile))
require($classFile);
else
throw new CException(Yii::t('yii','Alias "{alias}" is invalid. Make sure it points to an existing PHP file.',array('{alias}'=>$alias)));
self::$_imports[$alias]=$alias;
}
else
self::$classMap[$alias]=$classFile;
return $alias;
}
else
throw new CException(Yii::t('yii','Alias "{alias}" is invalid. Make sure it points to an existing directory.',
array('{alias}'=>$namespace)));
}
if(($pos=strrpos($alias,'.'))===false) // a simple class name
{
if($forceInclude && self::autoload($alias))
self::$_imports[$alias]=$alias;
return $alias;
}
$className=(string)substr($alias,$pos+1);
$isClass=$className!=='*';
if($isClass && (class_exists($className,false) || interface_exists($className,false)))
return self::$_imports[$alias]=$className;
if(($path=self::getPathOfAlias($alias))!==false)
{
if($isClass)
{
if($forceInclude)
{
if(is_file($path.'.php'))
require($path.'.php');
else
throw new CException(Yii::t('yii','Alias "{alias}" is invalid. Make sure it points to an existing PHP file.',array('{alias}'=>$alias)));
self::$_imports[$alias]=$className;
}
else
self::$classMap[$className]=$path.'.php';
return $className;
}
else // a directory
{
if(self::$_includePaths===null)
{
self::$_includePaths=array_unique(explode(PATH_SEPARATOR,get_include_path()));
if(($pos=array_search('.',self::$_includePaths,true))!==false)
unset(self::$_includePaths[$pos]);
}
array_unshift(self::$_includePaths,$path);
if(self::$enableIncludePath && set_include_path('.'.PATH_SEPARATOR.implode(PATH_SEPARATOR,self::$_includePaths))===false)
self::$enableIncludePath=false;
return self::$_imports[$alias]=$path;
}
}
else
throw new CException(Yii::t('yii','Alias "{alias}" is invalid. Make sure it points to an existing directory or file.',
array('{alias}'=>$alias)));
}
瀵煎叆涓涓被鎴栦竴涓洰褰曘
瀵煎叆涓涓被灏卞儚鍖呭惈鐩稿簲鐨勭被鏂囦欢銆
涓昏鍖哄埆鏄鍏ヤ竴涓被姣旇緝杞诲阀锛
瀹冧粎鍦ㄧ被鏂囦欢棣栨寮曠敤鏃跺寘鍚
瀵煎叆涓涓洰褰曠浉褰撲簬娣诲姞涓涓洰褰曞埌PHP鍖呭惈璺緞涓
濡傛灉鏈夊涓洰褰曡瀵煎叆锛屽湪绫绘枃浠舵悳绱㈡椂锛
鍚庡鍏ョ殑鐩綍浼樺厛浜庝箣鍓嶅鍏ョ洰褰曪紙渚嬪锛屽畠浠娣诲姞鍒颁簡PHP鍖呭惈璺緞鐨勫墠闈級銆
璺緞鍒悕鏄敤鏉ュ鍏ヤ竴涓被鎴栫洰褰曘備緥濡傦紝
application.components.GoogleMap
: import theGoogleMap
class.application.components.*
: import thecomponents
directory.
鐩稿悓鐨勮矾寰勫埆鍚嶅彲浠ュ娆″鍏ワ紝浣嗗彧鏈夐娆℃湁鏁堛 瀵煎叆涓涓洰褰曞皢涓嶄細瀵煎叆鍏朵笅闈㈢殑浠讳綍瀛愮洰褰曘
浠1.1.5鐗堟湰寮濮嬶紝杩欎釜鏂规硶涔熷彲浠ヤ娇鐢ㄥ懡浠ょ┖闂存牸寮忓鍏ヤ竴涓被 (浠匬HP 5.3鍙婁互涓婄増鏈彲鐢)銆 瀹冪被浼间娇鐢ㄨ矾寰勫埆鍚嶆牸寮忓鍏ヤ竴涓被锛 闄や簡鈥.鈥濆垎闅旂琚浛鎹㈡垚鈥淺鈥濆垎闅旂锛屼緥濡傦紝瀵煎叆
application\components\GoogleMap
涓庡鍏application.components.GoogleMap
鐩镐技銆
涓嶅悓鐨勬槸鍓嶈呬娇鐢ㄥ悎娉曠殑鍚嶇О,鍚庤呮槸涓嶅悎娉曠殑銆
娉ㄦ剰锛屽鏋滄垜浠娇鐢ㄥ弽鏂滅嚎浠f浛鐐瑰彿 浣跨敤鍛藉悕绌洪棿鏍煎紡瀵煎叆涓涓被瑕佹眰鍛藉悕绌洪棿鐩稿搴斾簬涓涓湁鏁堢殑璺緞鍒悕銆 渚嬪锛屽懡鍚嶇┖闂
application\components
蹇呴』瀵瑰簲涓涓湁鏁堢殑
璺緞鍒悕application.components
銆
public static void log(string $msg, string $level='info', string $category='application')
| ||
$msg | string | 鏃ュ織淇℃伅 |
$level | string | 淇℃伅绛夌骇锛堜緥濡傗榯race鈥欙紝鈥榳arning鈥欙紝鈥榚rror鈥欙級銆傚畠澶у皬鍐欎笉鏁忔劅銆 |
$category | string | 淇℃伅绫诲埆锛堜緥濡傗榮ystem.web鈥欙級銆傚畠澶у皬鍐欎笉鏁忔劅銆 |
public static function log($msg,$level=CLogger::LEVEL_INFO,$category='application')
{
if(self::$_logger===null)
self::$_logger=new CLogger;
if(YII_DEBUG && YII_TRACE_LEVEL>0 && $level!==CLogger::LEVEL_PROFILE)
{
$traces=debug_backtrace();
$count=0;
foreach($traces as $trace)
{
if(isset($trace['file'],$trace['line']) && strpos($trace['file'],YII_PATH)!==0)
{
$msg.="\nin ".$trace['file'].' ('.$trace['line'].')';
if(++$count>=YII_TRACE_LEVEL)
break;
}
}
}
self::$_logger->log($msg,$level,$category);
}
鍐欏叆涓鏉℃棩蹇椾俊鎭 鏃ュ織淇℃伅鍙互閫氳繃杩欎釜鏂规硶CLogger::getLogs 杩斿洖骞朵笖鍙互浣跨敤CLogRouter 璁板綍鍦ㄤ笉鍚屽獟浣撲笂锛屼緥濡傦細file锛宔mail锛宒atabase銆
public static string powered()
| ||
{return} | string | 涓涓彲浠ュ湪浣犵殑缃戦〉涓婃樉绀虹殑Powered-by-Yii淇℃伅 |
public static function powered()
{
return Yii::t('yii','Powered by {yii}.', array('{yii}'=>'<a href="http://www.yiiframework.com/" rel="external">Yii Framework</a>'));
}
杩斿洖涓涓彲浠ュ湪缃戦〉涓樉绀虹殑Powered-by-Yii瀛楃涓蹭俊鎭
public static void registerAutoloader(callback $callback, boolean $append=false)
| ||
$callback | callback | 涓涓湁鏁堢殑PHP鍥炶皟锛堝嚱鏁板悕鎴朼rray($className,$methodName))锛. |
$append | boolean | 鏄惁鍦ㄩ粯璁ょ殑Yii绫昏嚜鍔ㄥ姞杞藉櫒鍚庨檮鍔犳柊鐨勭被鑷姩鍔犺浇鍣ㄣ |
public static function registerAutoloader($callback, $append=false)
{
if($append)
{
self::$enableIncludePath=false;
spl_autoload_register($callback);
}
else
{
spl_autoload_unregister(array('YiiBase','autoload'));
spl_autoload_register($callback);
spl_autoload_register(array('YiiBase','autoload'));
}
}
娉ㄥ唽涓涓柊鐨勭被鑷姩鍔犺浇鍣ㄣ 鏂扮殑绫昏嚜鍔ㄥ姞杞藉櫒灏嗙疆浜autoload涔嬪墠鎴 鍏朵粬宸茬粡瀛樺湪鐨勫姞杞藉櫒涔嬪悗銆
public static void setApplication(CApplication $app)
| ||
$app | CApplication | 搴旂敤绋嬪簭瀹炰緥銆傚鏋滀负null锛 杩欎釜宸茬粡瀛樺湪鐨勫簲鐢ㄧ▼搴忓疄渚嬪皢琚Щ闄ゃ |
public static function setApplication($app)
{
if(self::$_app===null || $app===null)
self::$_app=$app;
else
throw new CException(Yii::t('yii','Yii application can only be created once.'));
}
鍦ㄧ被闈欐佹垚鍛樹腑瀛樺偍搴旂敤绋嬪簭瀹炰緥銆 杩欎釜鏂规硶甯姪瀹炵幇CApplication鐨勫崟渚嬫ā鍧椼 閲嶅璋冪敤璇ユ柟娉曟垨CApplication鏋勯犲櫒 灏嗘姏鍑轰竴涓紓甯搞 浣跨敤app()鑾峰彇搴旂敤绋嬪簭瀹炰緥銆
public static void setLogger(CLogger $logger)
| ||
$logger | CLogger | 鏃ュ織璁板綍鍣ㄥ璞° |
public static function setLogger($logger)
{
self::$_logger=$logger;
}
璁剧疆鏃ュ織璁板綍鍣ㄥ璞°
public static void setPathOfAlias(string $alias, string $path)
| ||
$alias | string | 璺緞鍒悕 |
$path | string | 瀵瑰簲鐨勮矾寰勫埆鍚嶏紝濡傛灉涓簄ull锛 鍒欏搴旂殑璺緞鍒悕灏嗚绉婚櫎銆 |
public static function setPathOfAlias($alias,$path)
{
if(empty($path))
unset(self::$_aliases[$alias]);
else
self::$_aliases[$alias]=rtrim($path,'\\/');
}
鍒涘缓涓涓矾寰勫埆鍚嶃 娉ㄦ剰锛岃鏂规硶鏃笉妫娴嬭矾寰勬槸鍚﹀瓨鍦ㄤ篃涓嶆娴嬫槸鍚﹁鑼冦
public static string t(string $category, string $message, array $params=array (
), string $source=NULL, string $language=NULL)
| ||
$category | string | 淇℃伅绫诲埆銆傝浠呬娇鐢ㄤ竴涓崟璇嶅瓧姣嶃 娉ㄦ剰锛岀被鍒榶ii鈥欐槸棰勭暀缁橸ii妗嗘灦鏍稿績浠g爜浣跨敤鐨勶紝鍙傝CPhpMessageSource 鑾峰彇鏇村鍏充簬淇℃伅绫诲埆鐨勮В閲娿 |
$message | string | 鍘熷淇℃伅 |
$params | array | 鍙傛暟琚簲鐢ㄥ埌淇℃伅涓娇鐢ㄧ殑strtr 銆
绗竴涓弬鏁板彲浠ユ槸涓涓病鏈夐敭鐨勬暟瀛椼
骞朵笖鍦ㄨ繖绉嶆儏鍐典笅锛岃繖涓柟娉曞皢璋冪敤CChoiceFormat::format
閫夋嫨涓涓傚綋鐨勪俊鎭紙杩涜锛夌炕璇戙
鑷1.1.6寮濮嬶紝浣犱负CChoiceFormat::format
浼犻掑鏁板弬鏁颁笉蹇呭皝瑁呮垚鏁扮粍銆 |
$source | string | 鎸囧畾娑堟伅婧愪娇鐢ㄧ殑搴旂敤缁勪欢銆 榛樿涓簄ull锛屾剰鎬濇槸娑堟伅浣跨敤鐨勨榗oreMessages鈥欏睘浜庘榶ii鈥欑被鍒紝 鑰屽墿浣欑殑娑堟伅浣跨敤鈥榤essages鈥欍 |
$language | string | 鐩爣璇█銆傚鏋滀负绌猴紙榛樿锛夛紝灏嗕娇鐢application language銆 |
{return} | string | 宸茬炕璇戠殑淇℃伅 |
public static function t($category,$message,$params=array(),$source=null,$language=null)
{
if(self::$_app!==null)
{
if($source===null)
$source=($category==='yii'||$category==='zii')?'coreMessages':'messages';
if(($source=self::$_app->getComponent($source))!==null)
$message=$source->translate($category,$message,$language);
}
if($params===array())
return $message;
if(!is_array($params))
$params=array($params);
if(isset($params[0])) // number choice
{
if(strpos($message,'|')!==false)
{
if(strpos($message,'#')===false)
{
$chunks=explode('|',$message);
$expressions=self::$_app->getLocale($language)->getPluralRules();
if($n=min(count($chunks),count($expressions)))
{
for($i=0;$i<$n;$i++)
$chunks[$i]=$expressions[$i].'#'.$chunks[$i];
$message=implode('|',$chunks);
}
}
$message=CChoiceFormat::format($message,$params[0]);
}
if(!isset($params['{n}']))
$params['{n}']=$params[0];
unset($params[0]);
}
return $params!==array() ? strtr($message,$params) : $message;
}
缈昏瘧涓鏉′负鎸囧畾璇█鐨勪俊鎭 杩欎釜鏂规硶鏀寔閫夋嫨鏍煎紡锛堝弬瑙CChoiceFormat锛夛紝 渚嬪锛屾牴鎹粰瀹氱殑鏁板瓧鍊间粠鍑犱釜渚夋潯浠朵腑杩斿洖娑堟伅銆 鍋囪涓鏉′俊鎭湪涓浜涜瑷涓湁涓嶅悓鐨勫鏁版牸寮忥紝 姝ゅ姛鑳戒富瑕佺敤鏉ヨВ鍐冲鏁版牸寮忛棶棰樸
鍙傝
public static void trace(string $msg, string $category='application')
| ||
$msg | string | 鏃ュ織淇℃伅 |
$category | string | 娑堟伅绫诲埆 |
public static function trace($msg,$category='application')
{
if(YII_DEBUG)
self::log($msg,CLogger::LEVEL_TRACE,$category);
}
鍐欏叆涓鏉¤窡韪俊鎭 杩欎釜鏂规硶浠呭湪璋冭瘯妯″紡涓嬪啓鍏ヤ竴鏉℃棩蹇椼