Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:你的博客中为什么只有一个作业?
//ap.php;
namespace A\one;
//常量define
define('CON',['con'=>'const','def'=>'define']);
//常量const
const CONA=0;
//接口
interface I{
public static function i_f(string $str):void;
}
//类
class C{
const CONS=1;
public static function c_f(string $str):void{
echo static::class.'=>'.$str.'</br>';
}
}
//函数
function F(){
echo __FUNCTION__.'</br>';
}
/*------------------------------------------------*/
//bp.php;
namespace B;
//导入命名空间A\one,及别名引用
use A\one\I as A1;
use A\one\C as C1;
use function A\one\F as F1;
use const A\one\CONA;
require 'ap.php';
//interface
class C implements A1{
public static function i_f(string $str):void{
echo static::class.'=>'.$str.'</br>';
}
}
echo '接口非限定';
(new namespace\C())->i_f('str');
//class
echo '类非限定:';
$c=C1::c_f('str');
echo '类完全限定:';
$c=\A\one\C::c_f('str');
//function
echo '函数非限定:';
F1();
echo '函数完全限定:';
\A\one\F();
//const
echo '常量const非限定:';
echo 'CONA='.CONA.'</br>';
echo '常量const完全限定:';
echo 'CONA='.\A\one\CONA.'</br>';
echo '类常量:';
echo 'CONS='.C1::CONS.'</br>';
//define
echo '常量define完全限定:';
echo "CON['def']=".\CON['def'].'</br>';
\
。\
不是第一个字符.\
.use spacename;
use spacename\class;
::class
|spacename\class
;解决了命名空间中的命名冲突问题
;::class
操作符和__NAMESPACE__
魔术常量区别:__NAMESPACE__
可以返回当前命名空间;不是真正意义的常量,不能设置,根据当前空间内容的不同,而不断变化.::class
可以解析/反射出类的完全限定名称,快速生成完全限定名称的类名。
__NAMESPACE__适用于求当前命名空间名
::class 可用于任何命名空间求任何类完全限定名