首頁 > 後端開發 > php教程 > 深入淺析php中如何宣告與引入命名空間

深入淺析php中如何宣告與引入命名空間

青灯夜游
發布: 2023-04-10 12:02:02
轉載
3480 人瀏覽過

這篇文章為大家介紹一下php如何宣告命名空間、存取空間元素的三種方式,引入命名空間的方法。

深入淺析php中如何宣告與引入命名空間

一、命名空間

1.1 介紹

在一個大的專案中,可能會遇到同名的類別、函數、常數,為了區分這些元素,我們可以將這些元素分別存放到不同的命名空間。 1.命名空間就是包,用來存放項目中的類別、函數、常數 2.透過namespace關鍵字來宣告命名空間

1.2 宣告命名空間

範例:

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

  namespace USA; // 定义命名空间
  function getInfo () {
    echo &#39;我是美国人&#39;;
  }
  getInfo();
?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

利用\命名空間\可進入某個命名空間中呼叫方法。 範例:

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

  namespace USA; // 定义命名空间
  function getInfo () {
    echo &#39;我是美国人&#39;;
  }
  getInfo();
  \China\ getInfo();
?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

#1.3 多層命名空間

命名空間的名字可以是多層次的(子級命名空間) 例如:

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

  namespace USA\Washington; // 定义命名空间
  function getInfo () {
    echo &#39;USA\Washington&#39;;
  }
  \USA\Washington\ getInfo(); // 完全限定名称访问
?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

#1.4 存取空間元素的三種方式

1、非限定名稱訪問 2、完全限定名稱訪問 3、限定名稱訪問 範例:

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

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

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

?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

#二、引入命名空間

透過use引入命名空間 完全限定名稱存取元素 引入命名空間的拼接規則

公共空間引入空間(去除公共部分,公共部分只能留一級)空間元素

範例:

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

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

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

?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

2.1 引入空間元素

引入類別: use 引入函數:use function 引入常數: use const 範例:

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

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

效果:

深入淺析php中如何宣告與引入命名空間

#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 &#39;<br>&#39;;
  $stu1=new ChinaStudent;
  var_dump($stu1);
?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

#2.3 公用空間

如果一個頁面沒有namespace聲明空間這個頁面的元素在公共空間下 公共空間用\表示 範例:

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

?>
登入後複製

效果:

深入淺析php中如何宣告與引入命名空間

#2.4 命名空間注意事項

1 、命名空間只能存放類別、函數、const常數。 2.第一個namespace前面不能有任何的程式碼,空白字符,header()也不行。 3、包含檔案不影響目前的命名空間。

推薦學習:《PHP影片教學

以上是深入淺析php中如何宣告與引入命名空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:juejin.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板