PHP之namespace小记

Posted sinceForever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
?>

以上是关于PHP之namespace小记的主要内容,如果未能解决你的问题,请参考以下文章

php之快速入门学习-17(PHP 命名空间)

微信公众号接入之排序问题小记

一组阶段小记之读构建之法

PHP命名空间(Namespace)初探

构建之法阶段小记六

PHP 命名空间(namespace)