开发者社区> 问答> 正文

php导入命名空间使用动态名称实例化有意义么??报错

file01.php

<?php
namespace my\box;
class base {
	public function __construct() {
		echo __METHOD__.'<br />';
	}
}
?>



index.php

<?php
include 'file01.php';
use my\box\base;

$ns = 'my\box\base';

$obj = new $ns;
?>



如上面的两篇代码所示:

当文件index.php中的变量$ns 写成 'base',在他下面new $ns;会报错找不到类base,但是如果说讲变量$ns的值写成限定名称 既:'my\box\base',这样还有什么意义吗?因为这样写了之后上面的use语句就没用了,不写use语句照样也能成功实例化类base。

展开
收起
爱吃鱼的程序员 2020-06-14 17:45:51 655 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你怎么又来了...

    写use只是为了new的时候简化你写原始的类名

    如果使用了动态名称相当于java的反射classloader,classloader是不管你use了什么东西,

    它要求必须是类名的全称.

    你的基础太差了吧...纠结这种毫无意义的问题有意思吗?

    哦,看来是这样,使用了动态名称就不能使用别名了,因为既然动态名称要求是类名的全称,那么类名设置了别名的话就new不着动态名称重的类名了。谢谢啦朋友,虽然我令你无语了。。新年快乐。谢谢你的解答,我是差,我只是想知道为何写成例子那样的会找不到类,因为我并不知道这个动态名称是否重要,令我困惑的是,我看了一部分框架的代码并没有使用动态名称,所以我就越来越郁闷了。。
    2020-06-14 17:46:08
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载