其实纠结了很久要不要使用这个东西,但是看看了最新的框架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. <fmt:formatDate>标签的输出格式:

    <fmt:formatDate>标签的输出格式:  d   月中的某一天.一位数的日期没有前导零.      dd   月中的某一天.一位数的日期有一个前导零.      ddd   周中 ...

  2. dll 劫持

    库: AheadLib 输入dll 处填你要劫持的dll 路径. 例如: C:\WINDOWS\system32\lpk.dll 来自为知笔记(Wiz)

  3. php工作笔记2-php编码效率

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍.当然了,这个测试方法需要在十万级以上次执行,效果才明显.其实静态方法和非静态方法的效率 ...

  4. VUE 入门基础(4)

    四,计算属性 基础例子 <div id='example'> <p>0riginal message: "{{message}}"</p> &l ...

  5. 利用nginx来屏蔽指定的user_agent的访问以及根据user_agent做跳转

    对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁.这些垃圾流量多了之后,严重浪费服务器的带宽和资源.通过判断user agent,在nginx中禁用这些蜘蛛可 ...

  6. Python全栈开发day7

    一.Python生成器/迭代器 1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/env python # -*- coding:utf-8 -*- def shaw(n):     ...

  7. SQL 查询所有表名、字段名、类型、长度、存储过程、视图

    -- 获得存储过程创建语句 select o.xtype,o.name,cm.text from syscomments cm inner join sysobjects o on o.id=cm.i ...

  8. VFP MSSOAPTOOKIT 使用SOAP Headers

    .NET 有如下使用了自定义扩展HEADER来做验证  server.asmx代码 using System;using System.Collections.Generic;using System ...

  9. BZOJ2037: [Sdoi2008]Sue的小球

    Description Sue 和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海 盗,而是要收集空中漂浮 ...

  10. 关于z-index

    某些情况下z-index设置多高都不起作用. 1.这种情况有三个前提条件:父标签position属性为relative:问题标签无position属性(不包括static):问题标签含有浮动(floa ...