批改状态:合格
老师批语:
<?php
namespace A{
header("content-type:text/html;charset=utf-8");
function a(){
echo '我是a';
}
\B\B::a();//访问B空间的B类中的a方法
\C\C::a();//访问C空间的C类中的a方法
}
namespace B{
class B
{
public static function a()
{
echo '我是b';
}
}
\A\a();//访问A空间的a方法
\c\C::a();//命名空间大小写不敏感,访问C空间的C类中的a方法
}
namespace C{
class C
{
public static function a()
{
echo '我是c';
}
}
\A\a(); //访问A空间的a方法
\B\B::a();//访问B空间的B类中的a方法
\C\C::a(); //完全限定名称
C::a();//非限定名称
D\D::a();//限定名称
}
namespace C\D{
class D
{
public static function a()
{
echo '我是d';
}
}
}
/*代码如上c空间-----命名空间中的完全限定名称,非限定名称和限定名称的区别是:在本空间中使用的变量或者方法、类
在解析路径的时候前面是当前空间的前缀,无需加前缀称为非限定名称如,如果从顶层命名空间找开始限定
名称则为完全限定名称,如果在本空间调用下一级空间中的变量或者方法、类,可以不用从顶级空间开始限定,
此时便是限定名称。这个和目录有点像,完全限定名称就好比绝对路径,限定名称就好比相对路径,非限定名称
就好比本文件中变量或者方法、类的路径*/
?>点击 "运行实例" 按钮查看在线实例
2.不在一个页面命名空间的使用
(1).index.php
<?php
namespace one;
//命名空间:作用防止用户自定义类与系统类重名,或者与其他版块的类同名
/*存在命名空间,第一个必须写在最顶端,不然会报错,
下面再有命名空间可以不用写最顶端,命名空间的名称不分大小写。
如果没有命名空间的话,默认在顶级空间里,如果存在命名空间,
不光需要导入文件,而且要导入类,use 的作用给命名空间起个别名*/
header("content-type:text/html;charset=utf-8");
require '2.php';
use \two\two1;//引入的空间类取别名 如果没有as,就会取当前类名two1作为别名
class one{
public function __construct() {
echo '我是one';
}
}
new one;
echo '<br>';
new \two\two;//实例two类
echo '<br>';
$two1 = new two1;//实例two1类
echo two1::two1_test();//访问two1中静态方法
echo '<br>';
echo two1::FIT;//访问two1中常量
echo '<br>';
echo $two1->test();//访问two1中方法
echo '<br>';
?>点击 "运行实例" 按钮查看在线实例
(2).2.php
<?php
namespace two;
header("content-type:text/html;charset=utf-8");
class two
{
public function __construct() {
echo '我是two';
}
}
class two1
{
const FIT = 'www.12306.net';
public static function two1_test()
{
return __METHOD__;
}
public function test()
{
return __METHOD__;
}
}
?>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号