博客列表 >命名空间的使用

命名空间的使用

过儿的博客
过儿的博客原创
2019年03月06日 17:56:57925浏览

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>';

    ?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

1.png


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>';
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议