其实纠结了很久要不要使用这个东西,但是看看了最新的框架laravel,cakephp等等的新版本都使用上了,所以还是随大流顺便学习下。

namespace和c++里面的概念差不多,只是用法有点差别。

首先,如果我在index.php文件中想使用db/mysql.php这个文件里的mysql这个类。

使用方法如下:

mysql.php文件:

namespace DB;

class Mysql
{ public function index(){
echo 'im mysql';
}
}

index.php文件

namespace test;  //  声明当前文件为test命名空间下。

use DB\Mysql;    //使用db命名空间下的mysql类,仅仅use DB;是不行的。!!!!

include 'db/mysql.php';   //引入mysql.php这个文件。

$obj = new Mysql();  //这样就可以用了。

OK,继续,如果不想用use xxxx,也可以直接$obj = new \DB\Mysql();前提是也要include mysql.php这个文件。这里有个细微差别。

$obj = new Mysql();     //首先在当前空间找,如果没有,再从公共区域查找mysql类.(这里的公共区域是指没有被命名空间包含的代码以及系统函数)

$obj = new DB\Mysql();    //从当前空间(这里假如是test)下的DB空间里 查找mysql类。(符合此要求的mysql声明为namespace test\DB)

$obj = new \DB\Mysql();   //从命名空间根部查找DB空间的mysql类。

注意:

其实对于没有用命名空间的项目来说,所有的class都是默认在\这个命名空间下的。所以在这种项目里面new aaa()和new \aaa()效果一样。

当有命名空间的项目,引入一个没有命名空间的文件A.php时,应该用new \A()来实例化,如果不用\,会在当前文件的NS下查找class A,是找不到的。

eg:

namespace ElfFramework\View;

class CoreView
{
function __construct()
{
require ELF_PATH . 'Vendor/Smarty/Libs/Smarty.class.php';
$obj = new \Smarty(); //Smarty.class.php文件没有用NS,如果这行用new Smarty(),系统会在NS为ElfFramework\View\下找类名为Smarty的文件,是找不到的。 }
}

php namespace用法的更多相关文章

  1. C++中的namespace用法

    关键字namespace定义了一个名字空间,里面的变量和函数,声明在此名字空间外使用须在前面加名字空间名称.例如: #include<iostream.h>namespace my{ in ...

  2. namespace用法

    1.在WCF.Controller中定义了一个UserModel,标记为① 2.在WCF.Controller.Model中定义了一个UserModel(同上,namespace不同),标记为② 3. ...

  3. Struts, Namespace用法

    最近在用SSH框架做一个项目,在使用Struts 的namespace时遇到不少问题,现在就对struts namespace 做一个简单的介绍吧.(本文从项目结构展开叙述) (第1次写博客, 写的不 ...

  4. mybatis配置文件namespace用法总结

    本文为博主原创,未经允许不得转载: 由于在应用过程中,发现namespace在配置文件中的重要性,以及配置的影响,在网上看了很多博客,发现很多人对namespace存在误解, 所以总结一下namesp ...

  5. k8s中新建一个namespace和harborsecret的yaml文件

    注意哟, 不同的harborsecret,在不同的namespace中,是不共用的. 也就是说,如果在default名字空间中,创建了一个docker login secret, 在其它名字空间中,是 ...

  6. 1.namesapce用法

    namespace用法示例 #include <iostream> using namespace std; //定义域名空间 namespace myspace { ; void sho ...

  7. JAVA类(上)

    package test; public class staticAccess { public int age; public staticAccess grow() { age++; return ...

  8. C++ 之namespace常见用法

    一.背景 需要使用Visual studio的C++,此篇对namespace的常用用法做个记录. 二.正文 namespace通常用来给类或者函数做个区间定义,以使编译器能准确定位到适合的类或者函数 ...

  9. namespace的用法

    C++中采用的是单一的全局变量命名空间.在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突.当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字:有时为了程序 ...

随机推荐

  1. MFC 如何改变对话框的默认背景颜色(转)

    下面介绍三种方法:实现改变对话框的默认背景颜色:   (1)可以在CLotteryApp::InitInstance()设置更新对话框的背景颜色       调用SetDialogBkColor(RG ...

  2. RunTime的简单使用

    Runtime也就是运行时,是苹果官方提供的一套C语音库,那有什么作用呢?简单的来说,Runtime可以做很多的底层操作,比如说访问隐藏的一些成员变量,成员方法,当然包括了私有的成员变量,成员方法. ...

  3. FileInputStream、FileReader、FileInputStream、FileWriter使用小结

    本文是基于Linux环境运行,读者阅读前需要具备一定Linux知识 InputStream包含如下三个方法: int read():从输入流中读取单个字节,返回所读取的字节数据(字节数据可直接转化为i ...

  4. Linux 之集群 LVS

    查看系统是否支持IPVS功能 [root@nginx ~]# grep -i 'ipvs' /boot/config-2.6.18-308.el5 # IPVS transport protocol ...

  5. python+selenium简易自动化框架,包含生成测试报告以及发送结果至Email

    Selenium+python环境搭建见虫师的pdf文档,非常详尽 简易框架: 1.文件目录:

  6. makefile:2: *** 遗漏分隔符 。 停止

    from http://hi.baidu.com/��֮��/blog/item/8ec00e2aca65a525d42af11b.html 我们在编写完makefile,然后在终端中 $make出现 ...

  7. 微信公众平台开发 微信JSSDK开发

    根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过) 2.引 ...

  8. RapidXML 试用

    近半年来断断续续的封装一些SDK,在兼顾跨平台.易用性和高效率上还要顾及到对外dll的大小问题.由于之前解析SVG文件的用到了一个XML解析库xercesc,这个DLL实在巨大近4M,于是尝试用新的X ...

  9. 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)

    cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑.每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大…… 但是凭心而论,3.0RC版本开始 ...

  10. select 选项的子句

    select 选项 : 关键字 all :全部(默认值)distinct:去掉重复的查询结果.语法:select all * from 表名: 别名: 关键字:as 语法:select * from ...