Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:命名空间中有许多的概念, 比较容易混淆, 必须多想想, 但一旦掌握 了, 后面的代码会非常的清楚
//命名空间创建必须第一行
namespace phpName;
//完全限定名称访问类成员
require "demo3.php";
$result=\phpName\lib\Demo::Index();
//完全限定名称访问接口
require "demo4.php";
class test implements \phpName\api\iPhp
{
static public function today()
{
return '类名:'.__class__;
}
}
$result=test::today();
//完全限定名称访问函数
require "demo5.php";
$result=\phpName\common\getFunction();
//完全限定名称访问常量
require "demo6.php";
$result=\phpName\parma\MY_NAME;
//格式化打印结果,字符串类型
echo "<pre>".print_r($result,true)."</pre>";
//命名空间创建必须第一行
namespace phpName;
//导入类
require "demo3.php";
use \phpName\lib\Demo;
$result=Demo::Index();
//格式化打印结果,字符串类型
echo "<pre>".print_r($result,true)."</pre>";
//导入接口
require "demo4.php";
use \phpName\api\iPhp;
class test implements iPhp
{
static public function today()
{
return '类名:'.__class__;
}
}
$result=test::today();
echo "<pre>".print_r($result,true)."</pre>";
//导入函数
require "demo5.php";
use function phpName\common\getFunction;
$result=getFunction();
echo "<pre>".print_r($result,true)."</pre>";
//导入常量
require "demo6.php";
use const phpName\parma\MY_NAME;
$result=MY_NAME;
//格式化打印结果,字符串类型
echo "<pre>".print_r($result,true)."</pre>";
//命名空间创建必须第一行
namespace phpName\school;
class food{}
//命名空间创建必须第一行
namespace phpName;
//当前空间下定义类,只有什么没有实现
class food{}
require "test.php";
use phpName\school\food as stFood;
$result=stFood::class;
//格式化打印结果,字符串类型
echo "<pre>".print_r($result,true)."</pre>";
\
,必须是第一个字符,有时候被省略。限定名称:从当前空间开始查找成员,至少有一个\
,并且不是第一个字符。非限定名称:只会在当前空间中查找,不含空间名,整个名称里没有\
。限定名称可以看做是完全限定名称的子集,在同一个空间下,非限定名称也可以看做是限定名称的子集。::class
可以将非限定名称,限定名称转换成完整限定名称。完全限定名称转换成非限定名称,通过use导入转换。完全限定名称转换成限定名称,可以通过导入空间实现。::class
可以快速生成一个完全限定名称,最初用魔术常量__NAMESPACE__
也是为了拼接出一个所需类名,至于使用具体场景查找无果。use
)+别名(as
),解决当前类中成员与导入成员之间的冲突。