PHP6 的namespace 命名空间

php有namespace或类似的东西的。对于发布类库框架,或者构建大的程序来说是很重要的。可以避免类名和函数名冲突,又不用像Pear里那样把类名弄得老长。当初php5的测试版曾经出现过,后来正式发布时又取消了,让我空欢喜一场。7月初,php6的snap里又加入了namespace,希望这次不要再让我空欢喜了。

  这次的namespace实现和当初的实现有所不同,更接近于C++的语法。

声明namespace时在文件里加上例如

namespace blogbus::test;

function foo(){
    echo "foo";
}

class Test{
    function bar(){
        echo "bar";
    }
}

  该文件中的类和函数:foo,Test就属于blogbus::test的命名空间。在其他文件包含该文件后,可以用blogbus::test::foo()来调用函数,用blogbus::test::Test来使用类。如果只是这样的话那打字还是很麻烦的。所以可以使用
import blogbus::test::Test;
之后就可以直接用Test了。也可以
import blogbus;
之后可以用test::Test来使用。可惜目前的实现没有类似Java的import xxx.*; 或是python的from xxx import *;这样的语法。要导入许多东西的时候还是有些麻烦。

   既然namespace是为了解决命名冲突的问题,那么使用import来节省打字,保护键盘的时候还是需要避免import进来的东西和原有的东西重名的问题。所以import还可以这样用:import blogbus::test::Test as Blogbus。这时,就可以用Blogbus这个名字来使用blogbus::test::Test。你可以$test = new Blogbus();然后echo get_class($test);看看结果,会发现输出的仍然是blogbus::test::Test。

时间: 2024-10-02 23:01:10

PHP6 的namespace 命名空间的相关文章

亲密接触ASP.Net(6) Namespace(命名空间)的使用

关于Namespace(命名空间)的使用 在前面的程序中我们看到,我常用<% @ Import Namespace="System.Data" %>,这是在引用M$为我们提供的Namespace,这和ASP不同的,我们在ASP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能.其实说白了,一个Namespace; 就是一个组件.这个是关于ASP.net的高级应用,我会在后面的章节讲.(不过要写到那里,时间......) 我下面简单的列举一些常用的Nam

PHP namespace 命名空间详解

在这里中我们介绍了php教程命名空间的用途和namespace关键字,在这篇文章中我们将介绍一下use命令的使用以及php如何解析命名空间的名字的. namespace bakbaba; function bab(){     echo "bi"; } namespace kkk; function k1(){     echo "k1"; } bakbababab();//在kkk的命名空间下使用别的命名空间,注意前面的 use bakbaba as b;//依旧

JavaScript namespace命名空间使用说明

写C或者JAVA习惯的人写JavaScript时可能会发现JavaScript并没有命名空间这一概念,当然如果没有接触过命名空间的程序猿(比如写js,PHP,Python)也可能对命名空间不关注或者不重视.这样的情况普遍存在,见过不少人写JavaScript时直接就全局变量的写,如:  代码如下 复制代码 function a(){   }   function b(){   } 什么是命名空间呢?语言使用的一种代码组织的形式 通过名称空间来分类,区别不同的代码功能 .无论项目大小,如果一开始不

C++ using namespace std; 表示使用那些命名空间呀?是一种怎么样的形式?

问题描述 C++ using namespace std; 表示使用那些命名空间呀?是一种怎么样的形式? 比如说#include是包含一个文件,文件有趣连接一个源文件,当时命名空间是一个什么呢? 是一个库吗?是一个文件吗? 命名空间是定义的什么地方的? 或者说是一个什么东西 解决方案 标准C++引入命名空间,除了可以避免成员的名称发生冲突之外,还可以使代码保持局部性,从而保护代码不被他人非法使用.如果你的目的主要是后者,而且又为替命名空间取一个好听.有意义.且与别人的命名空间不重名的名称而烦恼的

PHP命名空间(namespace)的使用基础及示例_php实例

PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的. 一. PHP的命名空间主要解决三种冲突的问题:常量,函数,类 通俗理解:namespace就相当于是用来建一个目录,将namespace下面的代码放在该目录里面,与外面的区分开来. /* |--------------------------------- |namespace示例 |@黑眼诗人 <www.chenwei.ws>

ASP.Net中命名空间Namespace浅析和使用例子_实用技巧

关于Namespace(命名空间)的使用,我常用 复制代码 代码如下: < % @ Import Namespace="System.Data" %> ,这是在引用为我们提供的Namespace,这和ASP不同的,我们在ASP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能.其实说白了,一个Namespace; 就是一个组件. 这个是关于ASP.net的高级应用. 我下面简单的列举一些常用的Namespace 复制代码 代码如下: < % @

PHP命名空间namespace用法实例分析_php技巧

本文实例讲述了PHP命名空间namespace用法.分享给大家供大家参考,具体如下: namespace(命名空间)相当于函数.类,划分了一个区域,这样子就使得在同个页面中可以require相同的类,使用相同名字的函数 : 在项目中比较少用 name.php: <?php //命名要使用复合名称 namespace me\mine; class me{ public function __construct(){ echo 'name'.'<br>'; } public function

浅谈几种常见语言的命名空间(Namespace)_C 语言

命名空间提供了一种从逻辑上组织类的方式,防止命名冲突. 几种常见语言 C++ 命名空间是可以嵌套的 嵌套的命名空间是指定义在其他命名空间中的命名空间.嵌套的命名空间是一个嵌套的作用域,内层命名空间声明的名字将隐藏外层命名空间声明的同名成员: int x = 20; namespace outer { int x = 10; namespace inner { int z = x; } } int main() { std::cout << outer::inner::z; // 输出10 re

PHP 5.3中的命名空间:你用过了么?

  命名空间是PHP 5.3中最重要的变化,对于C#和Java开发人员对这个词语非常熟悉了,他们终于可以更好地改变PHP应用程序的结构了. 为什么我们需要命名空间? 随着你的PHP代码库的增长,对之前定义的函数和类名进行修改时风险也更高了,当你试图增加第三方组件或插件时问题更严重,如果存在两个或两个以上的代码集实现了一个"Database"和"User"类会怎么样? 直到目前,唯一的解决办法是使用长的类/函数名,例如Wordpress在每个类和函数名前都使用了前缀&