• 下载频道 http://www.it165.net/down/
  • PHP的 AOP 扩展 Runkit

    发布日期:2014-02-26 21:49:19
    Tag标签:PHP??AOP??扩展??Runkit??
    • 关键词:
      PHP??AOP??扩展??Runkit??
    • 所属栏目:
      PHP
    • 开发语言:
      PHP????
    • 软件授权:
      BSD??
    • 运行平台:
      跨平台????
    • runkit扩展库是pecl的php扩展的一部分。
      ?
      runkit提供了一套函数,能让你动态的修改任意类和函数的定义。根据php提供的反射机制,得到所有用户定义的类和函数,你可以把他们重命名然后再用原来的函数名/方法名重新添加一个方法/函数,重新添加的函数的函数体,你可以任意定义---用字串儿,当你的php脚本开始执行时,你要最先 调用你设计的这个“钩子”,把所有的类的方法或函数都"钩"一遍,这样,不管是哪个方法在执行的时候,都会执行到你提供的切入点上的代码.
      ?
      不过,在使用runkit的时候,还遇到一个问题:就是大小写的问题,起初,在“钩”方法的时候,有的方法带有大写字母,通过反射得到的方法名 也是区分大小写的,但是,应该在php解析执行函数的时候,还是把所有方法名或函数名都转换成了小写,这样,在用runkit提供的动态添加方法的函数添 加方法时,也忠实方法原来的命名,带着大写字母就直接添进去了,结果,再调用被钩的方法的时候,报错,死活也找不着原来的那个方法了,原因应该就 是,php在解析执行类、方法、函数时,应该都是按小写形式来定位的方法和函数的,而用runkit直接添加进去的带有大写字母的函数,自然就会找不到, 所以,在用runkit添加方法的时候,要把方法名都转换成小写,这样php就可以找到这个方法了,函数应该也是同样的.
      ?
      示例代码:
      ?
      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
    下载标题??(选择版本点击标题下载) 文件 资源大小
    8 官网下载
    次元立方 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
    本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规