溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中怎么聲明和引入命名空間

發(fā)布時間:2021-07-28 11:26:32 來源:億速云 閱讀:140 作者:Leah 欄目:編程語言

這篇文章給大家介紹php中怎么聲明和引入命名空間,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、命名空間

1.1 介紹

在一個大的項目中,可能會遇到同名的類、函數(shù)、常量,為了區(qū)分這些元素,我們可以將這些元素分別存放到不同的命名空間中。 1、命名空間就是包,用來存放項目中的類、函數(shù)、常量 2、通過namespace關(guān)鍵字來聲明命名空間

1.2 聲明命名空間

例:

<?php
  namespace China; // 定義命名空間
  function getInfo () {
    echo '我是中國人';
  }
  getInfo();

  namespace USA; // 定義命名空間
  function getInfo () {
    echo '我是美國人';
  }
  getInfo();
?>

效果:

php中怎么聲明和引入命名空間

利用\命名空間\可進入某個命名空間中調(diào)用方法。 例:

<?php
  namespace China; // 定義命名空間
  function getInfo () {
    echo '我是中國人';
  }
  getInfo();

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

效果:

php中怎么聲明和引入命名空間

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(); // 完全限定名稱訪問
?>

效果:

php中怎么聲明和引入命名空間

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();  // 限定名稱訪問

?>

效果:

php中怎么聲明和引入命名空間

二、引入命名空間

通過use引入命名空間 完全限定名稱訪問元素 引入命名空間的拼接規(guī)則

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

例:

<?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();

?>

效果:

php中怎么聲明和引入命名空間

2.1 引入空間元素

引入類: use 引入函數(shù):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>';
  // 引入函數(shù)
  use function China\Beijing\Shunyi\getInfo;
  getInfo();
  echo '<br>';

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

效果:

php中怎么聲明和引入命名空間

2.2 給類、函數(shù)取別名

如果引入的類和函數(shù)與當前空間的類和函數(shù)名稱相同,需要給引入的類和函數(shù)取別名。 通過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);
?>

效果:

php中怎么聲明和引入命名空間

2.3 公共空間

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

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

?>

效果:

php中怎么聲明和引入命名空間

2.4 命名空間注意事項

1、命名空間只能存放類、函數(shù)、const常量。 2、第一個namespace前面不能有任何的代碼,空白字符,header()也不行。 3、包含文件不影響當前的命名空間。

關(guān)于php中怎么聲明和引入命名空間就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI