PHP之namespace小記
阿新 • • 發佈:2017-09-19
類名 現在 data exc sub const 全局 限定 代碼
命名空間的使用
在聲明命名空間之前唯一合法的代碼是用於定義源文件編碼方式的 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
?>
PHP之namespace小記