命名空間

爲何要使用命名空間。php

大量的開發者編寫了大量的函數庫,意味着在一個空間下會有重名的類。使用命名空間避免衝突致使異常。函數

 

<?php



namespace cart;

function getCart()
{
	echo "coke\n";
}

cart.phpspa

<?php


namespace user;


function getName()
{
	echo "jun\n";
}

user.phpcode

<?php

//命名空間
// 文件都引用到這個文件中,模擬單入口登陸
// 以後看看命名空間如何調用函數方法或者對象的
// index.php   user.php  cart.php
// namespace 必須在文件開始的時候就聲明,並且不用引號
// 若是申明瞭文件的命名空間,那麼下次調用的時候必須聲明文件所在的命名空間(包)才能調用
namespace index;
include("user.php");
include("cart.php");


//namespace user;
getName();
//Fatal error: Call to undefined function index\getName() in D:\code\demo\index.php on line 14


namespace user;
getName();
//jun

namespace cart;
getCart();
//coke
<?php
	
	namespace usr\foo;
	echo __NAMESPACE__;// usr\foo;

 

######################################################對象

cart.php作用域

<?php

namespace cart;

class Cart
{
	function __construct()
	{
		echo "coke\n";
	}
}

user.php開發

<?php

namespace user;

class User
{
	function __construct()
	{
		echo "jun\n";
	}
}

index.phpget

<?php
// use 來聲明命名空間的別名
include("cart.php");
$c = new cart\Cart();
// coke

include("user.php");
$u = new \user\User();//以反斜槓開始的是絕對命名空間,
//從根命名空間開始搜索,而不是當前命名空間
// jun

use \user as u;
//使用別名來簡化書寫,若是沒有as 那麼默認別名是最後一個斜槓後面的名字
$u = new u\User();

調用方式io

1,namespace Name; 對象名function

2 , Name+ 反斜槓+對象名

當前命名空間名

    __NAMESPACE__

使用別名

    use alias\use as use 或者 alias\use 不用as時默認 use 爲別名 

從根命名空間開始查找匹配(樹根則是無名的全局命名空間

    反斜槓+名字        \use\foo

反過來想一想,是否對任何的php代碼都能使用命名空間,

回去查手冊:雖然任意合法的PHP代碼均可以包含在命名空間中,但只有三種類型的代碼受命名空間的影響,它們是:類,函數和常量。

咱們只能用命名空間操做類,函數,和常量

什麼叫命名空間?

命名空間是對做用域的一種特殊的抽象,它包含了處於該做用域內的標識符,且自己也用一個標識符來表示,這樣便將一系列在邏輯上相關的標識符用一個標識符組織了起來。

(固然不少時候咱們使用的生產環境尚未到5.3或者因爲其餘緣由沒有使用命名空間,那麼也可使用PEAR包的命名規則)

相關文章
相關標籤/搜索