首頁 >後端開發 >php教程 >PHP命名空間namespace定義及導入use案例分析

PHP命名空間namespace定義及導入use案例分析

php中世界最好的语言
php中世界最好的语言原創
2018-05-18 10:24:241359瀏覽

這次帶給大家PHP命名空間namespace定義及導入use案例分析,PHP命名空間namespace定義及導入use的注意事項有哪些,以下就是實戰案例,一起來看一下。

在PHP中,出現同名函數或是同名類別是不被允許的。為防止程式設計人員在專案中定義的類別名稱或函數名稱出現重複衝突,在PHP5.3中引入了命名空間這一概念。

1.命名空間,即將程式碼分割成不同空間,不同空間的類別名稱相互獨立,互不衝突。 一個php檔案中可以存在多個命名空間,第一個命名空間前不能有任何程式碼。內容空間宣告後的程式碼便屬於這個命名空間,例如:

<?php
echo 111;  //由于namespace前有代码而报错
namespace Teacher;
class Person{
  function construct(){
   echo &#39;Please study!&#39;;
  }
}

2.呼叫不同空間內類別或方法需寫明命名空間。 例如:

<?php
namespace Teacher;
class Person{
  function construct(){
   echo &#39;Please study!<br/>';
  }
}
function Person(){
  return 'You must stay here!';
};
namespace Student;
class Person{
  function construct(){
   echo 'I want to play!<br/>';
  }
}
new Person();     //本空间(Student空间)
new \Teacher\Person();   //Teacher空间
new \Student\Person();   //Student空间
echo \Teacher\Person();   //Teacher空间下Person函数

輸出:

I want to play!
Please study!
I want to play!
You must stay here!

3.在命名空間內引入其他檔案不會屬於本命名空間,而屬於公共空間或是檔案本身定義的命名空間。 範例:

先定義一個1.php和2.php檔:

<?php  //1.php
class Person{
 function construct(){
   echo 'I am one!<br/>';
  }
}
<?php
namespace Newer;
require_once './1.php';
new Person();  //报错,找不到Person;
new \Person();  //输出 I am tow!;
<?php  //2.php
namespace Two
class Person{
 function construct(){
   echo 'I am tow!<br/>';
  }
}
<?php
namespace New;
require_once './2.php';
new Person();  //报错,(当前空间)找不到Person;
new \Person();  //报错,(公共空间)找不到Person;
new \Two\Person(); //输出 I am tow!;

4.下面我們來看use的使用方法:(use以後引用可簡寫)

namespace School\Parents;
class Man{
  function construct(){
   echo 'Listen to teachers!<br/>';
  }
}
namespace School\Teacher;
class Person{
  function construct(){
   echo 'Please study!<br/>';
  }
}
namespace School\Student;
class Person{
  function construct(){
   echo 'I want to play!<br/>';
  }
}
new Person();     //输出I want to play!
new \School\Teacher\Person(); //输出Please study!
new Teacher\Person();   //报错
----------
use School\Teacher;
new Teacher\Person();   //输出Please study!
----------
use School\Teacher as Tc;
new Tc\Person();   //输出Please study!
----------
use \School\Teacher\Person;
new Person();   //报错
----------
use \School\Parent\Man;
new Man();   //报错

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

PHP隱藏入口檔案步驟詳解

#PHP MySQL對固定時間段內資料統計最佳化步驟詳解

PHP使用函數靜態變數實作指定迭代次數步驟詳解

以上是PHP命名空間namespace定義及導入use案例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn