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

此人隐藏 发布于 2015/02/22 22:46
阅读 1K+
收藏 1
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。

加载中
0
甘薯
甘薯

你怎么又来了...

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

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

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

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

此人隐藏
此人隐藏
哦,看来是这样,使用了动态名称就不能使用别名了,因为既然动态名称要求是类名的全称,那么类名设置了别名的话就new不着动态名称重的类名了。 谢谢啦朋友,虽然我令你无语了。。新年快乐。
此人隐藏
此人隐藏
谢谢你的解答,我是差,我只是想知道为何写成例子那样的会找不到类,因为我并不知道这个动态名称是否重要,令我困惑的是,我看了一部分框架的代码并没有使用动态名称,所以我就越来越郁闷了。。
返回顶部
顶部