批改状态:合格
老师批语:概念还是不太清楚 , 还要多做些这方面的练习, 希望在实战中进步
类
<?phpnamespace demo;class Demo{function show_name(){echo self::class;}}
接口
<?phpnamespace demo\api;interface IDemo{public static function show_name();}
函数(定义在全局范围)
<?phpnamespace demo\lib;function demo(){echo __METHOD__;}
常量(不受作用域的限制)
<?phpnamespace demo\param;const USER=array('name'=>'Lin','age'=>26);
<?phprequire 'class.php';require 'interface.php';require 'function.php';require 'const.php';//完全限定名称访问类echo \demo\Demo::class;echo '<hr />';//完全限定名称访问接口class Demo2 implements \demo\api\IDemo{static function show_name(){var_dump(class_implements(self::class));}}Demo2::show_name();echo '<hr />';//完全限定名称访问函数echo \demo\lib\demo();echo '<hr />';//完全限定名称访问常量echo \demo\param\USER['name'];

require以及include。默认导入的是类和接口,因此在导入函数和常量时,需要在use后增加function和const)
<?php//导入类require 'class.php';use \demo\Demo;echo Demo::class;echo '<hr />';//导入接口require 'interface.php';use \demo\api\IDemo;class Demo2 implements IDemo{static function show_name(){var_dump(class_implements(self::class));}}Demo2::show_name();echo '<hr />';//导入函数以及别名引用require 'function.php';use function \demo\lib\demo as demoFunction;echo demoFunction();echo '<hr />';//导入常量require 'const.php';use const \demo\param\USER;echo USER['name'];

答:完全限定名称,从全局空间开始查找成员,把成员当做一个文件,可以看做是从根目录开始查找这个文件,类似绝对路径,如:\demo\lib\demo; 限定名称,从当前空间开始查找成员,把成员当做一个文件,可以看做是从当前的目录开始查找文件,类似相对路径,即名称前至少一个\并且位置不位于第一个字符,如:lib\demo;非限定名称,仅在当前空间查找成员,把成员当做一个文件,可以看做是只在当前的目录中查找文件,类似当前路径,如:demo
答:使用use可以完成,当写出完整的命名空间路径时,可以转为非限定名称;当写出部分的命名空间路径时,可转为限定名称;限定名称, 非限定名称转为完成限定名称,需补齐完整的命名空间路径
答:首先是限定名称与限定名称, 非限定名称之间的转换,其次简化在访问成员时命名空间完整路径的编写
答:::class操作符返回的是完全限定名称,__NAMESPACE__只返回当前的命名空间。具体的应用场景暂不确定。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号