批改状态:合格
老师批语:
1、命名空间中的全局成员访问技术
<?php
namespace one;
//定义三个全局成员
class Pig { }
function hello(){ return 'Hello 朱老师';}
const SITE = 'php.cn';
//访问成员
echo Pig::class.'<br>';//完整的类名
echo hello().'<br>';
echo SITE.'<br>';
//在一个PHP文件中可以矿建多个命名空间
namespace two;
class Pig { }
function hello(){ return 'Hello 王老师';}
const SITE = 'html.cn';
//访问成员
echo Pig::class.'<br>';//完整的类名
echo hello().'<br>';
echo SITE.'<br>';
//如果在two空间想要访问one空间
//必须先返回到跟空间
echo \one\Pig::class.'<br>';//完整的类名
echo \one\hello().'<br>';
echo \one\SITE.'<br>';
?>点击 "运行实例" 按钮查看在线实例

2、 带有命名空间的类,如何实现自动加载?
<?php
$path = str_replace('\\','/','inc\Class1');
echo $path;
echo '<br>';
$path = __DIR__.'/'.$path.'.php';
echo $path;
spl_autoload_register(function($class){
$path = str_replace('\\','DIRECTORY_SEPARATOR','$class');
$path = __DIR__.'/'.$path.'.php';
if(!is_file($path) && file_exists($path)){
throw new \Exception('不是文件或文件不存在');
}
require $path;
});
$obj1 = new \inc\Class1();
$obj2 = new \inc\Class2();
echo get_class($obj1).'<br>';
?>点击 "运行实例" 按钮查看在线实例
3、 命名空间的别名导入方式
<?php //空间别名 namespace current; include 'inc/Class1.php'; $obj = new \test1\inc\Class1(); echo get_class($obj).'<br>'; //命名空间别名 use \test1\inc\Class1 as C1; $obj1 = new c1; echo get_class($obj1).'<br>'; ?>
点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号