您的位置:

php命名空间与use(php 命名空间和use)

本文目录一览:

PHP 的use 命名空间 是什么意思

有点类似于 java 中的包机制,用来解决重名问题的,每一个命名空间都是独立的

给你举个例子吧,比如我现在想写两个类,名字都叫 Action

?php

namespace A;    // 定义命名空间

class Action {

    //..

}

namespace B;    // 定义第二个命名空间

class Action {

    //..

}

use 关键字用于导入某个命名空间下的类, 如果我在B空间内想使用A空间中的Action类,就需要导入这个类才能使用(当然也可以指明空间前缀来使用)

namespace B;

// 在本空间中需要使用A空间中的Action类,使用use导入

use A\Action;    // 导入,如果本空间中也有一个Action会出现错误,因为类重名了

use A\Action as A_Action;   // 通过取别名的方式解决

$var = new A_Action;

php编程高手们来吧 use有什么用?

php中use用来以别名的方式引入命名空间:

比如在a.php中调用My\Full命名空间下的Fun对象:

use My\Full;

$fun = new Fun();//这样就可以了,

如果没有使用use,

则需要:$fun = new My\Full\Fun();//带着命名空间路径

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 来实现。

thinkphp 命名空间什么情况下使用,use后面加载什么

命名空间其实只是为了加载文件更方便,tp的自动加载机制使用了它。

use 是继承类使用的关键词,当加载父类时,tp会更加use后面的命名空间查找对应的文件。tp会在多个目录进行查找,具体的可以查看tp文档的自动加载机制。

php命名空间 use使用的问题:

命名空间是运行时解析的。use就相当于一种声明,并不解析和加载。在使用时就可以自动加载进来,那么这里你就可以理解为把db这个类库导入进来了,所以可以正常使用。