深入浅析php中如何声明和引入命名空间

2021-07-28,

本篇文章给大家介绍一下php如何声明命名空间、访问空间元素的三种方式,引入命名空间的方法。

/2021/07/37a73223.jpg

一、命名空间

1.1 介绍

在一个大的项目中,可能会遇到同名的类、函数、常量,为了区分这些元素,我们可以将这些元素分别存放到不同的命名空间中。
1、命名空间就是包,用来存放项目中的类、函数、常量
2、通过namespace关键字来声明命名空间

1.2 声明命名空间

例:

<?php
  namespace China; // 定义命名空间
  function getInfo () {
    echo '我是中国人';
  }
  getInfo();

  namespace USA; // 定义命名空间
  function getInfo () {
    echo '我是美国人';
  }
  getInfo();
?>

效果:

/2021/07/a9d27d91.png" /2021/07/a9d27d91.png" alt="1.png

利用\命名空间\可进入某个命名空间中调用方法。
例:

<?php
  namespace China; // 定义命名空间
  function getInfo () {
    echo '我是中国人';
  }
  getInfo();

  namespace USA; // 定义命名空间
  function getInfo () {
    echo '我是美国人';
  }
  getInfo();
  \China\ getInfo();
?>

效果:

/2021/07/68d07dc5.png" /2021/07/68d07dc5.png" alt="2.png

1.3 多级命名空间

命名空间的名字可以是多级的(子级命名空间)
例如:

<?php
  namespace China\Beijing\Shunyi; // 定义命名空间
  function getInfo () {
    echo 'China\Beijing\Shunyi';
  }
  getInfo(); // 非限定名称访问

  namespace USA\Washington; // 定义命名空间
  function getInfo () {
    echo 'USA\Washington';
  }
  \USA\Washington\ getInfo(); // 完全限定名称访问
?>

效果:

/2021/07/9c970fbe.png" /2021/07/9c970fbe.png" alt="3.png

1.4 访问空间元素的三种方式

1、非限定名称访问
2、完全限定名称访问
3、限定名称访问
例:

<?php
  namespace China\Beijing\Shunyi; // 定义命名空间
  function getInfo () {
    echo 'China\Beijing\Shunyi';
  }

  namespace China\Beijing; // 定义命名空间
  function getInfo () {
    echo 'China\Beijing';
  }

  getInfo();  // 非限定名称访问 
  \China\Beijing\getInfo();  // 完全限定名称访问
  Shunyi\getInfo();  // 限定名称访问

?>

效果:

/2021/07/403d3785.png" /2021/07/403d3785.png" alt="4.png

二、引入命名空间

通过use引入命名空间
完全限定名称访问元素
引入命名空间的拼接规则

公共空间+引入空间+(去除公共部分,公共部分只能留一级)空间元素

例:

<?php
  namespace China\Beijing\Shunyi; // 定义命名空间
  function getInfo () {
    echo 'China\Beijing\Shunyi<br>';
  }

  namespace China\Beijing; // 定义命名空间
  function getInfo () {
    echo 'China\Beijing<br>';
  }

  use China\Beijing\Shunyi;
  getInfo(); 
  Shunyi\getInfo();

?>

效果:

/2021/07/2b547a4d.png" /2021/07/2b547a4d.png" alt="5.png

2.1 引入空间元素

引入类: use
引入函数:use function
引入常量: use const
例:

<?php
  namespace China\Beijing\Shunyi; // 定义命名空间
  class Student {
  }
  function getInfo() {
    echo 'jdk';
  }
  const TYPE = 'CONST';
  namespace USA; // 定义命名空间
  // 引入类
  use China\Beijing\Shunyi\Student;
  $stu = new Student();
  var_dump($stu);
  echo '<br>';
  // 引入函数
  use function China\Beijing\Shunyi\getInfo;
  getInfo();
  echo '<br>';

  // 引入常量
  use const China\Beijing\Shunyi\TYPE;
  echo TYPE;
?>

效果:

/2021/07/c55054b8.png" /2021/07/c55054b8.png" alt="6.png

2.2 给类、函数取别名

如果引入的类和函数与当前空间的类和函数名称相同,需要给引入的类和函数取别名。
通过as取别名
例:

<?php
  namespace China\Beijing\Shunyi; // 定义命名空间
  class Student {
  }
  

  namespace USA; // 定义命名空间
  class Student {

  }
  use China\Beijing\Shunyi\Student as ChinaStudent;
  $stu=new Student;
  var_dump($stu);
  echo '<br>';
  $stu1=new ChinaStudent;
  var_dump($stu1);
?>

效果:

/2021/07/8424f93b.png" /2021/07/8424f93b.png" alt="7.png

2.3 公共空间

如果一个页面没有namespace声明空间这个页面的元素在公共空间下
公共空间用\表示
例:

<?php
  function getInfo() {
    echo '李白<br>';
  }
  \getInfo();

?>

效果:

/2021/07/15a8b9ff.png" /2021/07/15a8b9ff.png" alt="8.png

2.4 命名空间注意事项

1、命名空间只能存放类、函数、const常量。
2、第一个namespace前面不能有任何的代码,空白字符,header()也不行。
3、包含文件不影响当前的命名空间。

推荐学习:《PHP视频教程》

以上就是深入浅析php中如何声明和引入命名空间的详细内容,更多请关注北冥有鱼其它相关文章!

本文转载自【PHP中文网】,希望能给您带来帮助,苟日新、日日新、又日新,生命不息,学习不止。

《深入浅析php中如何声明和引入命名空间.doc》

下载本文的Word格式文档,以方便收藏与打印。