php namespace命名空間

據個人理解,用到所需要的類時,需要先require或include引入,所以會發生類重定義的錯誤的前提是:兩個相同命名的類都有被引入。目前有些php框架會自動加載(即include)所有新建的model類,所以爲了避免你新建的model類和項目框架原生的核心類發生重名衝突,採用了namespace。

首先若引入兩個相同的類則會顯示:Fatal error: Cannot redeclare class Box in D:\wamp\www\namespace\B.php on line 3,
報錯,現在則需要加入namespace,讓系統區分兩個類文件。
首先這是A.php文件
<?php
	namespace a\b;
	class Box{
		
		public function get_Userinfo(){
			echo "this is A";
		}
	}

這個爲B.php文件

<?php
	namespace a\c;
	class Box{
		
		public function get_Userinfo(){
			echo "this is B";
		}
	}

兩個類名相同則使用不同的命名空間,並使用use用於縮短命名空間

        require_once("./A.php");
	require_once("./B.php");
	
	use a\b\Box;
	use a\c\Box as BBox;
	
	$a = new Box();
	$a->get_Userinfo();
	
	echo "<br/>";
	
	$b = new BBox();
	$b->get_Userinfo();

沒有定義命名空間,就理解爲使用頂級命名空間。new類時,可以在類前加上反斜槓\,也可以不加。

<?php
	class Box{
		
		public function get_Userinfo(){
			echo "this is C";
		}
	}
<?php
        c = new \Box();
	$c->get_Userinfo();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章