PHP 关于 new 的使用
本文介绍了PHP 关于 new 的使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
// 项目使用 `composer`
// 重新封装了 redis
use cache\Redis;
// 因为封装了几种缓存方式 如:file,memcache
// 所以想要这种 字符串 的方式来 new 类
// 但是这个方式直接报错,没有重名问题
$class = 'Redis';
$instance = new $class($options);
// 如果直接 new,就没有问题,可以正常运行
$instance = new Redis($options);
第一种报错是这样的 PHP Fatal error: Class 'Redis' not found
.
如果我不使用命名空间自动加载,使用include file
,第一种和第二种都没有问题.
这个是什么原理,怎么解决?谢谢了.
解决方案
使用命名空间,以变量为类名实例化的时候,需要包含完整的命名空间
,在实例化的地方直接加命名空间
$cls_name = 'Redis';
$class = "\cache\Redis\\".$cls_name;
$instance = new $class($options);
这篇关于PHP 关于 new 的使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文