您的位置:首页 > 编程语言 > PHP开发

php5.3以后不支持类名做构造方法,命名空间 加自动引入无法触发类名构造方法

2015-01-20 00:02 609 查看
今天写代码遇到了一个诡异的问题,搞了好久才发现居然是命名空间造成的。

php版本 5.6.3

起因

项目用了命名空间,通过命名空间 设置 spl_autoload_register (自动引入) 来加载类。但是加载了一个解密类时不管怎么调试 都无法解密出数据。

分析

尝试了很多次,一开始以为是框架问题。因为把加密类单独拿出来做测试时可以得到解密的字符串的。后来分析了半天 不是框架的问题。而是解密类太古老了 还是用的类名做的构造方法。正好要给这个解析类构造方法传参 如果用 require 引入类的话 是会触发 类名构造方法的 但是如果是用 spl_autoload_register 加命名空间自动引入的类
(必须是 既使用了命名空间 又使用了自动引入) 是无法触发类名构造方法的 必须写成 __construct() 才可以

结尾

往往很多小细节就会导致代码出现问题,所以调试的时候一定要仔细一点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: