当前位置:  软件>php软件

PHP 的 AOP 扩展 Runkit

    来源:    发布时间:2014-12-14

    本文导语:  runkit扩展库是pecl的php扩展的一部分。 runkit提供了一套函数,能让你动态的修改任意类和函数的定义。根据php提供的反射机制,得到所有用户定义的类和函数,你可以把他们重命名然后再用原来的函数名/方法名重新添加一个方...

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 $foon";
  echo "Bar is $barn";
  echo "Baz is $bazn";
}
$foo = 1;
$bar = 2;
$baz = 3;

testme();

输出:
Foo is 1
Bar is 2
Baz is

兼容性: PHP 4.2 or greater


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • PHP的AOP库 Go!
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS
  • php通过socket_bind()设置IP地址代码示例
  • php服务器探针显示php服务器信息
  • PHP的substr() 函数用法
  • PHP缓存加速器 Alternative PHP Cache (APC)
  • PHP介绍及学习网站推荐
  • PHP源文件加密工具 PHP Screw
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • PHP自动化测试 PHP-QAT
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • PHP 的 HTTP 客户端库 PHP Buzz
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • 怎样使RedHat8中的PHP添加MySql扩展? iis7站长之家


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3