Yii web程式入口(3)

2021-09-08 03:02:01 字數 1852 閱讀 1736

來至:

yii_path/base/cmodule.php

php**  

//第二個引數標識如果是空則建立之,預設為true

public

function getcomponent($id,$createifnull=true)  

}  }  

下面是yii::createcomponent的實現:

php**  

public

static

function createcomponent($config)  

else

if(isset($config['class']))  

else

throw

new cexception(yii::t('yii','object configuration must be an array containing a "class" element.'));    

//如果類不存在,則使用import來引入,而不是用autoload

if(!class_exists($type,false))  

$type=yii::import($type,true);    

//建立元件時,可以帶更多的初始值進行初始化

if(($n=func_num_args())>1)  

}  else

$object=new

$type;    

//將配置中的配置項賦值給元件的成員

foreach($config

as$key=>$value)  

$object->$key=$value;  

return

$object;  

我們再來看看errorhandler和exceptionhandler:

php**  

public

function handleerror($code,$message,$file,$line)  

}  catch(exception $e)  

$this->end(1);  

}  }  

dispalyerror**如下:

php**  

public

function displayerror($code,$message,$file,$line)                        

else

}        

參考:php手冊**  

設 定了error hanlder之後,某些級別的錯誤是不會觸發設定的函式的,例如:e_error(執行期錯誤,如記憶體分配錯誤),e_parse(解 釋錯誤,即語法),e_core_error(在php核心startup階段發生的錯誤),e_core_warning(在php核心startup 階段發生的warning),e_compile_error(編譯錯誤,zend引擎生成),e_compile_warning(編譯 warning,zend引擎生成)  

關於startup和zend引擎請參考php核心方面的資料  

handleexception與error相似:

php**  

public

function handleexception($exception)  

}  catch(exception $e)  

$this->end(1);  

}  

參考:php手冊**  

call_user_function可以傳遞兒女和內建的或者使用者自定義的函式,除了語言結構如array(), echo(), empty(), eval(), exit(), isset(), list(), print(), unset() 

程式入口 專題

test 1 26 t 裸函式.exe test 行 90 kernel32.dll 775a337a 未知 ntdll.dll 77c39882 未知 ntdll.dll 77c39855 未知 預設 1 26 t 裸函式.exe wmain int argc,wchar t argv 行 99 ...

程式的入口

作業系統裝載應用程式後,做完初始化工作就轉到程式的入口點執行。程式的預設入口點由連線程式設定,不同的聯結器選擇的入口函式也不盡相同。在vc 下,聯結器對控制台程式設定的入口函式是 maincrtstartup,maincrtstartup 再呼叫main 函式 對圖形使用者介面 gui 程式設定的入...

ollydbg找到主程式入口

通常用ollydbg開啟乙個程式之後,並沒有直接跳到程式主函式入口位址,而是在進行一些初始化工作,這個是需要跳過的。如果上述都不太熟悉的話可以中規中矩的進行單步執行 1.開始之後便一直f8,直到步過下面這個函式 ff15 38804000 call dword ptr ds kernel32.get...