批改状态:合格
老师批语:
用{}实现命名空间
<?php
//不建议一个文件中创建多个命名空间
//也可用{}大括号,使用{}时可以定义全局空间
namespace One
{
const NAME = 'PHP中文网';
class Db
{
public static function demo()
{
return __METHOD__;
}
}
function hello()
{
return 'say hello';
}
//print_r(NAME);全局下的函数
//重新定义print_r()函数
function print_r($value)
{
echo $value;
}
//使用自己定义的print_r()函数
print_r('你好');
//使用全局下的print()函数
\print_r('你好');
}
namespace Two
{
const NAME = 'PHP.cn';
class Db
{
public function demo()
{
return __METHOD__;
}
}
function hello()
{
return 'say hello world';
}
}
//全局空间
namespace
{
const NAME = 'www.php.cn';
//在全局空间下访问One中的NAME
echo \One\NAME;
}点击 "运行实例" 按钮查看在线实例
导入其他的命名空间
<?php
//use引入namesapce
//为命名空间起别名
namespace test2;
require 'test.php';
use test\Test as TestAlias; //导入类,并为类起别名
use test1\test1\test1 as test1; //为命名空间起别名
class Test
{
public static function test()
{
return __METHOD__;
}
}
echo Test::test().'<br>';
echo TestAlias::test().'<br>';
echo test1\Test::test().'<br>';点击 "运行实例" 按钮查看在线实例
限定名称、非限定名称、完全限定名称
<?php
//不建议一个文件中创建多个命名空间
//也可用{}大括号,使用{}时可以定义全局空间
namespace One
{
const NAME = 'PHP中文网';
class Db
{
public static function demo()
{
return __METHOD__;
}
}
function hello()
{
return 'say hello';
}
}
//自命名空间,放在前面
namespace Two\Three
{
const NAME = 'www.PHP.cn';
class Db
{
public function demo()
{
return __METHOD__;
}
}
function hello()
{
return 'say hello world';
}
echo __NAMESPACE__.'<hr>';
}
namespace Two
{
const NAME = 'PHP.cn';
class Db
{
public function demo()
{
return __METHOD__;
}
}
function hello()
{
return '你好';
}
echo NAME.'<br>'; //非限定名称,没有前缀,类似当前文件
echo Three\NAME.'<br>'; //限定名称,有前缀,使用命名空间前缀
echo \One\NAME.'<hr>'; //完全限定名称,使用\目录开始查找
echo __NAMESPACE__.'<hr>'; //魔术常量,输出当前命名空间
echo namespace\hello().'<br>'; //namespace类似self
echo namespace \Three\hello();
}点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号