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>'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例