您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> PHP >> black new new PHP 关于 new 的使用

black new new PHP 关于 new 的使用

来源:网络整理     时间:2017/6/30 16:11:42     关键词:black new new

关于网友提出的“black new new PHP 关于 new 的使用”问题疑问,本网通过在网上对“black new new PHP 关于 new 的使用”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:black new 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,第一种和第二种都没有问题.

这个是什么原理,怎么解决?谢谢了.


解决方案1:

已经解决了,谢谢了.

解决方案2:

需要完整的命名空间

use cache\Redis;

$class = Redis::class;//需要完整的命名空间
$instance = new $class($options);

OR


$class = '\cache\Redis';
//$class = \cache\Redis::class;
$instance = new $class($options);
解决方案3:

使用命名空间,以变量为类名实例化的时候,需要包含完整的命名空间,在实例化的地方直接加命名空间


$cls_name = 'Redis';
$class = "\cache\Redis\\".$cls_name;
$instance = new $class($options);

以上介绍了“black new new PHP 关于 new 的使用”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4378835.html

black new new相关图片

black new new相关文章