<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RunkitPHP 的 AOP 擴(kuò)展

          聯(lián)合創(chuàng)作 · 2023-09-30 07:05

          runkit擴(kuò)展庫(kù)是pecl的php擴(kuò)展的一部分。

          runkit提供了一套函數(shù),能讓你動(dòng)態(tài)的修改任意類(lèi)和函數(shù)的定義。根據(jù)php提供的反射機(jī)制,得到所有用戶(hù)定義的類(lèi)和函數(shù),你可以把他們重命名然后再用原來(lái)的函數(shù)名/方法名重新添加一個(gè)方法/函數(shù),重新添加的函數(shù)的函數(shù)體,你可以任意定義---用字串兒,當(dāng)你的php腳本開(kāi)始執(zhí)行時(shí),你要最先 調(diào)用你設(shè)計(jì)的這個(gè)“鉤子”,把所有的類(lèi)的方法或函數(shù)都"鉤"一遍,這樣,不管是哪個(gè)方法在執(zhí)行的時(shí)候,都會(huì)執(zhí)行到你提供的切入點(diǎn)上的代碼.

          不過(guò),在使用runkit的時(shí)候,還遇到一個(gè)問(wèn)題:就是大小寫(xiě)的問(wèn)題,起初,在“鉤”方法的時(shí)候,有的方法帶有大寫(xiě)字母,通過(guò)反射得到的方法名 也是區(qū)分大小寫(xiě)的,但是,應(yīng)該在php解析執(zhí)行函數(shù)的時(shí)候,還是把所有方法名或函數(shù)名都轉(zhuǎn)換成了小寫(xiě),這樣,在用runkit提供的動(dòng)態(tài)添加方法的函數(shù)添 加方法時(shí),也忠實(shí)方法原來(lái)的命名,帶著大寫(xiě)字母就直接添進(jìn)去了,結(jié)果,再調(diào)用被鉤的方法的時(shí)候,報(bào)錯(cuò),死活也找不著原來(lái)的那個(gè)方法了,原因應(yīng)該就 是,php在解析執(zhí)行類(lèi)、方法、函數(shù)時(shí),應(yīng)該都是按小寫(xiě)形式來(lái)定位的方法和函數(shù)的,而用runkit直接添加進(jìn)去的帶有大寫(xiě)字母的函數(shù),自然就會(huì)找不到, 所以,在用runkit添加方法的時(shí)候,要把方法名都轉(zhuǎn)換成小寫(xiě),這樣php就可以找到這個(gè)方法了,函數(shù)應(yīng)該也是同樣的.

          示例代碼:

          php.ini:
          runkit.superglobal=foo,bar

          test.php:
          function testme() {
            echo "Foo is $foo\n";
            echo "Bar is $bar\n";
            echo "Baz is $baz\n";
          }
          $foo = 1;
          $bar = 2;
          $baz = 3;

          testme();

          輸出:
          Foo is 1
          Bar is 2
          Baz is

          兼容性: PHP 4.2 or greater

          瀏覽 16
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人中文字幕免费最近 | 欧美大鸡巴在线 | 一级看片免费视频 | 国产夫妻自拍在线观看 | 久久99国产精品一区二区 |