其实纠结了很久要不要使用这个东西,但是看看了最新的框架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. Kafka安装

    一.下载kafka: http://kafka.apache.org/downloads 二.解压 tar -zxvf kafka_2.10-0.10.0.1.tgz 三.kafka需要用到zooke ...

  2. mysql的配置文件my.cnf

    调整MySQL运行参数,修改/etc/my.cnf文件调整mysql运行参数重启MySQL后生效,在MySQL4版本以后,一部分内部变量可以在MySQL运行时设置,不过重启MySQL就失效了. mys ...

  3. 团队项目建议 - 英语学习 App

    在这几年推广<构建之法>软件工程教学的过程中,我看到很多老师在讲软件工程的时候,虽然讲了很多年,但是手头没有任何项目,学生或者现想(得到一些大而无当,无法在一学期内完成一个可用版本的项目) ...

  4. Josn序列化与反序列化

    using System.Web.Script.Serialization; /// <summary>        /// 序列化器        /// </summary&g ...

  5. Weblogic页面应用查询oracle数据库后台报错或页面日期格式显示错误

    问题:在生产环境中有两台WEB服务器,分别为227和228,部署的应用代码都是每日同步的,两边完全一致,但是某些页面查询数据时,227无结果,并且后台报java数组越界的错误,而228一切正常.经开发 ...

  6. iOS9中的App Transport Security

    问题:webView加载网页加载不出来 原因:苹果在iOS9 sdk中加入了App Transport Security限制(iOS9以前的iOS sdk默认关闭ATS),默认强制使用https,并且 ...

  7. [Altera]PLL仿真

    EDA Tools: 1.Quartus II 13.1(64-bit) 2.Modelsim SE-64 10.1c Time: 2016.05.05 ----------------------- ...

  8. 2016 Multi-University Training Contest 2 - 1005 Eureka

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738 题目大意:给定平面上的n个点,一个集合合法当且仅当集合中存在一对点u,v,对于集合中任意点w,均 ...

  9. VC++ 最小化到托盘、恢复

    所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分.在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区. 一.托盘编程相关函数   ...

  10. poj3461 Oulipo(KMP模板)

    Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17795   Accepted: 7160 Descripti ...