PHP之namespace小记

命名空间的使用

在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。

PHP 命名空间中的类名可以通过三种方式引用:

  • 非限定名称,或不包含前缀的类名称.
  • 限定名称,或包含前缀的名称。
  • 完全限定名称,或者包含了全局前缀操作符的名称

file1.php

<?php
namespace Foo\Bar\subnamespace; 

const FOO = 1;
function foo() {}
class foo
{
    static function staticmethod() {}
}
?>

file2.php

<?php
namespace Foo\Bar;
include ‘file1.php‘;

const FOO = 2;
function foo() {}
class foo
{
    static function staticmethod() {}
}

/* 非限定名称*/
foo(); /*解析为:Foo\Bar\foo*/
foo::staticmethod(); /*同上*/
echo FOO; /*同上*/
/*限定名称*/
subnamespace\foo(); /*解析为:Foo\Bar\subnamespace\foo*/
subnamespace\foo::staticmethod(); /*同上*/
echo subnamespace\FOO; /*同上*/

/*完去限定名称*/
\Foo\Bar|foo(); /*解析为:Foo\Bar|foo*/
\Foo\Bar\foo::staticmethod(); /*同上*/
\Foo\Bar\FOO; /*同上*/

注意访问任意全局类、函数或常量,都可以使用完全限定名称,例如 \strlen() 或 \Exception 或 \INI_ALL。

在命名空间内部访问全局类、函数和常量:

<?php
namespace Foo;

function strlen() {}
const INI_ALL = 3;
class Exception {}

$a = \strlen(‘hi‘); // 调用全局函数strlen
$b = \INI_ALL; // 访问全局常量 INI_ALL
$c = new \Exception(‘error‘); // 实例化全局类 Exception
?>
时间: 2024-08-25 05:05:53

PHP之namespace小记的相关文章

mvc问题小记

工作中使用到mvcpager插件,在开发环境win7+iis7.5环境下,不需要配置,直接引用即可使用.但是无奈还有网站发布这一项工作,服务器环境server2008+iis7,部署之后出现问题. 当访问到调用mvcpager这个插件时就报如下错误: Server Error in '/' Application.The WebResource.axd handler must be registered in the configuration to process this request.

看书小记8(《C专家编程》)

int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); 系统跳转函数 ,可以直接在函数之间跳转 (比goto 强大多了) 将上下文 ,就是cpu和内存的信息保存到env中 ,然后调用 longjmp的时候跳转到使用env中的信息 ,恢复上下文 .如果是第一回调用setjmp 它会返回 0,如果从longjmp 跳转过来的 ,那就返回 longjmp的参数 val,根据setjmp的返回值, 我们就可以决定执行可能发生错误的代码还是

高内聚与低耦合实现小记

总所周知,实际软件开发中要实现高内聚.低耦合的设计原则.c语言和c++不同,c语言面向过程.c++面向对象. 真正的项目中,要对业务升级,原来的业务函数需要保留,要保证老的功能继续维持,不能直接删除,这时候 c语言面向过程,通常使用回调的方法.c++面向对象,要实现高内聚.低耦合,需要使用接口技术. C语言为例: 软件通常有后台日志的记录功能,用log函数实现,主业务用business函数表示: void log() { printf("Logging...\n"); } void b

并查集小记

并查集: 并查集,一种树型的数据结构,处理一些不相交集合的合并及查询问题.比如问题:某个家族人员过于庞大,要判断两个人是否是亲戚,不太容易.现给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚. 从基本实现集合的结构出发: 1.单纯的快速查找: 若id相同则在一个集合中,下图中,( 2, 3, 4, 9 )为一集合, 3 和 6 不在一个集合中 合并集合时,需逐个比较将

浮点数小记

// print float bits #include <iostream> using namespace std; int main() { float num = 0.15625; int n = *(int*)(void*)# cout<<(n)<<endl; for(int i = 0; i < 32; ++i) { if(n & (1<<(31-i))) cout<<1; else cout<<0; } c

看书小记9(《C专家编程》)

哈希表简单实现,练个手 #include "stdafx.h" #include <iostream> using namespace std; #define HASHSIZE 12 typedef struct HashTable { int *elem; int count; }HashTable; int m = 0; void Print(HashTable* h) { for (int i = 0; i < h->count; i++) { cout

Laravel Eloquent使用小记

文章保存地址:https://github.com/wanguowan/notetext-blog/blob/master/Eloquent.md Laravel Eloquent使用小记 今天因为开发数据库业务中间层需要,开始研究Laravel Eloquent,因为刚开始使用laravel框架的时候,都是使用query,查询构建器来写sql类似于 DB::connection('mydb')->table('mylove') ->where( 'name', 'guowan' ) ->

(转)JavaScriptSerializer,DataContractJsonSerializer解析JSON字符串功能小记

JsonAbout: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Web.Script.Serialization;using System.Runtime.Serialization.Json; namespace ConsoleApplicationTest{ public class JsonAbout { pub

mybatis开启二级缓存小记

mybatis开启二级缓存小记 1.开启二级缓存 和一级缓存默认开启不一样,二级缓存需要我们手动开启 首先在全局配置文件 mybatis-configuration.xml 文件中加入如下代码: <!--开启二级缓存 --> <settings> <setting name="cacheEnabled" value="true"/> </settings> 其次在 UserMapper.xml 文件中开启缓存 <