批改状态:合格
老师批语:
1用大括号语法实现在一个脚本中创建多个命名空间并访问成员
<?php
namespace Demo1
{
const APP_NAME = 'PHP';
class Goods
{
public $name = '苹果';
public static function eat($name= '')
{
return $name.'可以吃';
}
}
echo APP_NAME,'<br>';
echo (new Goods)->name,'<br>';
echo Goods::eat('苹果'),'<hr>';
}
namespace Demo2\Demo3
{
const NameSpances = '我是Demo2下的Demo3空间';
}
namespace Demo2
{
const APP_NAME = 'HTML';
class Goods
{
public $name = '香蕉';
public static function eat($name = '')
{
return $name.'可以吃';
}
}
echo APP_NAME,'<br>';
echo (new Goods)->name,'<br>';
echo Goods::eat('葡萄'),'<hr>';
echo Demo3\NameSpances;
}点击 "运行实例" 按钮查看在线实例
2.使用use 导入其它脚本中的类/常量/函数,并使用别名方式访问
<?php
//这是demo1文件
namespace Demo1;
const APP_NAME = 'PHP';
class Goods
{
public $name = '苹果';
public static function eat($name= '')
{
return $name.'可以吃';
}
}
function what()
{
return '这是Demo1命名空间下的函数';
}点击 "运行实例" 按钮查看在线实例
<?php
//这是demo2文件
namespace Model;
require 'demo1.php';
use Demo1\Goods as ClassName;
use const Demo1\APP_NAME as NAME;
use function Demo1\what as func;
class Test1
{
public static function test()
{
return __METHOD__;
}
}
echo Test1::test(),'<hr>';
echo ClassName::eat('西瓜'),'<hr>';
echo NAME,'<hr>';
echo func();点击 "运行实例" 按钮查看在线实例
3.非限定名称,限定名称和完全限定名称的命名空间之间的区别与联系是什么?
这三者给我的感觉就像 相对路径与绝对路径 这样;
非限定名称:或不包含前缀的类名称,就是名称本身;
限定名称:或包含前缀的名称,名称本身前要加上前缀;
完全限定:或包含了全局前缀操作符的名称,就是从根全局开始写的名称
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号