之前,我对一个新的缓存封装包写单元测试的时候(该包扩展了Memcached API),我遇到了重写Memcached::get()方法的问题。查看了
PHP文档
的
Memcached::get()方法,有三个参数必须添加到我的扩展签名,当我添加后,却一直得到“… should be compatible
with that of Memcached::get()”的错误提示。我尝试着查找这个方法的签名源代码,但是从
PECL文档
中没有找到任何有用的东西。于是,我使用PHP的
RelectionClass
,看是否能找出哪里丢失了扩展签名从而引起了上述错误。几分钟后,我得出下面的代码片断:
$this->cache = Cache::factory(Cache::TYPE_VOLATILE);
$reflector = new ReflectionClass(get_class($this->cache));
foreach ($reflector->getMethod('get')->getParameters() as $param) {
var_dump((string) $param);
}
它输出如下:
string(32) "Parameter #0 [ <required> $key ]"
string(37) "Parameter #1 [ <optional> $cache_cb ]"
string(39) "Parameter #2 [ <optional> &$cas_token ]"
几秒后,调查输出结果,我发现我没有通过引用传递第三个参数($cas_token),但是在我确定我的版本之前,我仔细检查了PHP文档的
Memcached::get(),事实发现$cas_token确实被引用传递过去了(通过&符号)。然后,我修改了我的扩展方法,第三个参数
通过引用传递,一切又如预期的那样。
当你需要确定一个API的时候,却没有相关的文档,可以尝试使用PHP的ReflectorClass来得到相关信息。
转载:http://www.oschina.net/question/157182_60568
分享到:
相关推荐
代码审计-PHP 项目类 RCE 及文件包含下载删#漏洞关键字:select insert update mysql_query mysqli 等文件上传:$_
由于每次写php程序的时候都要引入其他的php文件,这个让我很是头痛, 所以就模仿java中的spring的动态注入功能, 写了这么一段代码。这段代码我测试过还比较好用吧。 不过我认为还是用很多不合理的地方,和一些...
php-qq登陆类,类已封装,用于QQ登陆的callback页面。 实例化类时传入3个参数 app_id,app_key,callback,qq接入流程需要自己去QQ互联文档上了解,此类只做回调功能封装。 请求URL地址,得到返回字符串...
介绍一个简单的php-mysql操作类,数据库连接和设置,执行操作,显示信息,取得数据集的某个值,取得数据集的某个值,取得数据集的行数,循环读取数据,最后一次插入纪录的id值,插入任意数据,修改数据,删除数据,...
php-google-translate-free, PHP类用于免费使用谷歌翻译 API PHP GoogleTranslate免费 简单的PHP库,用于免费地翻译谷歌 API 。安装通过 Composer 安装这个软件包。composer require statickidz/php-google-tran
这是一个相关的php扩展类fpdf适用于打印技术的支持
本款邮件发送功能用了国外一个开源码的邮件类。 要注意的内容: 1,邮件的字符集设置,$mail->CharSet = "GB2312"; 这里指定字符集!在这里我只指定为GB2312因为这样Outlook能正常显示邮件主题,...
计算机后端-PHP基础到高级开发教程-53 PHP代码 作用复用 移植 .mp4
php mysql工具类,通过单例模式实现!
php-email实用类可以使用亲测,可以发送邮件,不用安装邮件系统,本人亲自使用测试,完全可行,方便使用
介绍一个php-RAS加密类代码,签名及密文编码:base64字符串/十六进制字符串/二进制字符串流,填充方式: PKCS1Padding(加解密)/NOPadding(解密),如密钥长度为1024 bit,则加密时数据需小于128字节,加上PKCS1...
介绍一个不错的PHP mysql操作类,SQL执行后的数据保存变量,读取一条数据并把数据往后移一位,如果数据为空则返回为null,更新数据库里面的数据,$t为表名,$v格式为数组格式,上标为字段名,下标为数据;$w为条件上标...
主要介绍了php mysql 封装类实例代码,数据库连接,数据库执行语句,可执行查询添加修改删除等任何sql语句,调试中使用,sql语句出错时会自动打印出来,将系统数据库与用户数据库分开,更直观的显示。
一个php连接sql-server的类
计算机后端-PHP基础到高级开发教程-53 PHP代码 作用复用 移植 .mp4
PHP+MySQL网站-主机域名类-php ajax 域名查询_domainsearch.zip
PHP+MySQL网站-主机域名类-PHP域名代管系统_dmadmin.zip
PHP基础到高级开发教程-57 PHP类与对象封装.mp4
PHP+MySQL网站-主机域名类-PHP多功能域名查询系统_phpchaxun.zip
NULL 博文链接:https://fenhonghai.iteye.com/blog/725162