Php 名称空间关键字是什么
我正在阅读PHP参考手册,遇到以下代码片段:Php 名称空间关键字是什么,php,namespaces,expression,Php,Namespaces,Expression,我正在阅读PHP参考手册,遇到以下代码片段: <?php namespace foo; use My\Full\Classname as Another; use My\Full\NSname; use ArrayObject; $obj = new namespace\Another; //I don't understand this line $obj = new Another; NSname\subns\func(); $a = new ArrayObject(array(1
<?php
namespace foo;
use My\Full\Classname as Another;
use My\Full\NSname;
use ArrayObject;
$obj = new namespace\Another; //I don't understand this line
$obj = new Another;
NSname\subns\func();
$a = new ArrayObject(array(1));
?>
如果您有以下类
a-名称空间foo
b-名称空间栏
c-无命名空间
然后,如果您包含这些文件并调用它们
a将是新的foo\a
b将是新的酒吧\b
c将是新的c
我使用名称空间简化自动加载,因此您可以使用名称空间作为目录,例如,new mynamespace\database\connector意味着该类存在于数据库目录中,文件名为connector.php,因此您不必有包含所有类文件的部分您到底想知道什么?PHP作为关于名称空间的广泛文档:您标记的行表示从当前名称空间创建类另一个的新实例。请参阅。@FelixKling这里引用了php引用:如果将包含类名称的字符串用于new,则将创建该类的新实例。如果类位于命名空间中,则执行此操作时必须使用其完全限定名。
。在我的例子中,字符串是namespace\other
。但在调用构造函数之前,必须对namespace语句求值。在名称空间foo中
它只是定义了foo
名称空间,但在我标记的字符串中,它被解析为foo
。为什么?引用中指定了它在哪里?正如我所说的,并且您可以在我链接到的页面上看到,namespace
是一个特殊的关键字,它引用了当前的名称空间。您引用的部分不适用于您的情况,因为您在这里没有使用字符串<代码>命名空间\另一个
不是字符串。再看一看属于您引用的零件的示例。