搜尋
首頁php教程php手册[namespace]PHP命名空间的使用基础,namespace命名空间

[namespace]PHP命名空间的使用基础,namespace命名空间

--------------------------------------------------------------------------------------------------

一. PHP的命名空间主要解决三种冲突的问题:常量,函数,类

 

通俗理解:namespace就相当于是用来建一个目录,将namespace下面的代码放在该目录里面,与外面的区分开来。

<span>/*</span><span>
|---------------------------------
|namespace示例
|@黑眼诗人 <www.chenwei.ws>
|---------------------------------
</span><span>*/</span><span>
namespace myself;

</span><span>function</span> <span>var_dump</span><span>()
{
    </span><span>echo</span> 100<span>;
}

</span><span>var_dump</span>(100);          <span>//</span><span>调用自定义函数(相对路径方式)</span>
<span>
\myself\</span><span>var_dump</span>(100);  <span>//</span><span>调用自定义函数(绝对路径方式) </span>
<span>
\</span><span>var_dump</span>(100);          <span>//</span><span>调用全局的(系统的函数)</span>

注意:namespace 之前不能有任何代码,除了declare();多个文件可以使用同一个命名空间,但同一命名空间下定义的内容是不能冲突的。namespace支持子命名空间,如:namespace \myself\good,相当于多级目录的概念。

 

二. 同一文件中存在多个命名空间的情况

1.

<span>/**<br /> * chenwei.ws<br /> */<br />namespace nihao\shijie;

namespace hello\world;

</span><span>function</span><span> test()
{
    </span><span>//</span><span>........</span>
<span>}

</span><span>//</span><span>连续命名,后面的代码将使用第二个命名空间,所有连续命名没有意义。</span>

2.

<span>/*</span><span>*
 * 同一文件中若使用了多个命名空间,建议大括号扩起来
 </span><span>*/</span><span>
namespace nihao\shijie{
  </span><span>function</span><span> test_one()<br />  {
    </span><span>//</span><span>......</span>
<span>  };
}

namespace hello\world{
  </span><span>function</span><span> test_two()<br />  {
    </span><span>//</span><span>........</span>
<span>  }
}

\nihao\shijie\test_one();

\hello\world\test_two();</span>

同一文件内使用多个命名空间,主要用于项目将多个PHP脚本合并在同一文件中,实际中不提倡使用!

 

三. 名称解析规则(几个概念)

  1.非限定名称:名称中不包含命名空间分割符,如:myself

  2.限定名称:名称中含有命名空间分割符,如:nihao\shijie

  3.完全限定名称:名称中包含分割符,并以命名空间分割符开始,如:\nihao\shijie  (即绝对路径的概念)

------------------------------------------------------------------------------------------------

php use php namespace 到底是怎一回事

1. namespace Zend\Http\PhpEnvironment;

这句代码定义了一个命名空间,你可以理解为定义一个名称为 Zend\Http\PhpEnvironment 的域名。

在定义了之后,下面所申明的class, interface, const等都是在申明的这个“域”里面的。当引用一个申明了命名空间的包含文件,想要调用这个里面的东西,那就必须:

调整当前脚本也到这个域名里,否则,就得用namesapce的全称。

比如,inc.php 文件:

namespace Zend\Http\PhpEnvironment;
class Bar {}//定义了一个类

则其他文件调用时:

// 访问Foo的第一种方法,用全称
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();

// 访问Foo的第二种方法
namespace Foo; // 调整当前脚本到Foo这个ns域,而且namespace申明必须在第一句
require 'inc.php';
$foo = new Bar();

2. use关键字目的是使用ns的别名:

比如说,上面的

// 访问Foo的第一种方法,用全称
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();

用uses后,写法如下:

use \Zend\Http\PhpEnvironment as pe; //定义别名

$foo = new \pe\Bar(); //用短的别名来代替原来的

如果省略后面的as ....,那么,就可以直接用最后一节的文字来代替,比如,上面的:

use \Zend\Http\PhpEnvironment; //定义别名
$foo = new \PhpEnvironment\Bar(); //用短的别名来代替原来的

================================================

php官方手册中的相关内容:

在PHP中,namespace命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:

1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。

PHP 命名空间支持有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名, 别名通过操作符 use 来实现。...余下全文>>
 

php namespace 命名空间出错?

语法上没有任何问题。

你的PHP版本是多少?PHP在5.3.0版本以后开始支持命名空间。你的PHP版本可能比较低。
 

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境