命名空间的使用
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
PHP 命名空间中的类名可以通过三种方式引用:
- 非限定名称,或不包含前缀的类名称.
- 限定名称,或包含前缀的名称。
- 完全限定名称,或者包含了全局前缀操作符的名称
file1.php
<?phpnamespace Foo\Bar\subnamespace; const FOO = 1;function foo() {}class foo{ ???static function staticmethod() {}}?>
file2.php
<?phpnamespace 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。
在命名空间内部访问全局类、函数和常量:
<?phpnamespace Foo;function strlen() {}const INI_ALL = 3;class Exception {}$a = \strlen(‘hi‘); // 调用全局函数strlen$b = \INI_ALL; // 访问全局常量 INI_ALL$c = new \Exception(‘error‘); // 实例化全局类 Exception?>
PHP之namespace小记
原文地址:http://www.cnblogs.com/sinceForever/p/7553243.html