PHP的runkit擴(kuò)展如何使用_第1頁(yè)
PHP的runkit擴(kuò)展如何使用_第2頁(yè)
PHP的runkit擴(kuò)展如何使用_第3頁(yè)
PHP的runkit擴(kuò)展如何使用_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第PHP的runkit擴(kuò)展如何使用是不是很神奇。這個(gè)runkit擴(kuò)展就是在運(yùn)行時(shí)可以讓我們來(lái)動(dòng)態(tài)的修改一些常量、方法體及類(lèi)的功能擴(kuò)展。當(dāng)然,從系統(tǒng)安全的角度來(lái)來(lái),這個(gè)擴(kuò)展并不是很推薦。因?yàn)楸旧沓A康暮x就是不變的量,本身就不應(yīng)該修改的。同理,在運(yùn)行時(shí)動(dòng)態(tài)的改變函數(shù)體或者類(lèi)定義的內(nèi)容都是會(huì)有可能影響到其它調(diào)用到這些函數(shù)或類(lèi)的代碼,所以,這個(gè)擴(kuò)展是一個(gè)危險(xiǎn)的擴(kuò)展。

除了動(dòng)態(tài)地修改常量外,我們還可以使用runkit_constant_add()、runkit_constant_remove()函數(shù)來(lái)動(dòng)態(tài)地增加或者刪除常量。

安裝

runkit擴(kuò)展的安裝是需要在github下載然后進(jìn)行正常的擴(kuò)展編譯即可,pecl下載的已經(jīng)過(guò)時(shí)了。

PHP5:/zenovich/runkit

PHP7:/runkit7/runkit7.git

clone成功后進(jìn)行正常的擴(kuò)展編譯安裝步驟即可。

phpize

./configure

makeinstall

不同的PHP版本需要安裝不同版本的擴(kuò)展,同時(shí),runkit7還在開(kāi)發(fā)中,有一些函數(shù)還沒(méi)有支持,比如:

runkit_class_adopt

runkit_class_emancipate

runkit_import

runkit_lint_file

runkit_lint

runkit_sandbox_output_handler

runkit_return_value_used

Runkit_Sandbox

Runkit_Sandbox_Parent

在寫(xiě)這篇文章的測(cè)試代碼時(shí),上述函數(shù)或者類(lèi)都是不支持的。大家可以用PHP5的環(huán)境測(cè)試下原版的擴(kuò)展是否都能正常使用。

查看超全局變量鍵

print_r(runkit_superglobals());

//Array

//[0]=GLOBALS

//[1]=_GET

//[2]=_POST

//[3]=_COOKIE

//[4]=_SERVER

//[5]=_ENV

//[6]=_REQUEST

//[7]=_FILES

//[8]=_SESSION

//)

這個(gè)函數(shù)其實(shí)就是查看下當(dāng)前運(yùn)行環(huán)境中的所有超全局變量鍵名。這些都是我們常用的一些超全局變量,就不一一解釋了。

方法相關(guān)操作

方法操作就和常量操作一樣,我們可以動(dòng)態(tài)地添加、修改、刪除以及重命名各種方法。首先還是來(lái)看一下我們最關(guān)心的在動(dòng)態(tài)運(yùn)行時(shí)來(lái)修改方法體里面的邏輯代碼。

functiontestme(){

echo"OriginalTestmeImplementation\n";

testme();//OriginalTestmeImplementation

runkit_function_redefine('testme','','echo"NewTestmeImplementation\n";');

testme();//NewTestmeImplementation

定義了一個(gè)testme()方法,然后通過(guò)runkit_function_redefine()來(lái)修改它的實(shí)現(xiàn),最后再次調(diào)用testme()時(shí)輸出的就是新修改后的實(shí)現(xiàn)了。那么,我們能不能修改PHP自帶的那些方法呢?

//php.iniernal_override=1

runkit_function_redefine('str_replace','','echo"str_replacechanged!\n";');

str_replace();//str_replacechanged!

runkit_function_rename

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論