【发布时间】:2018-01-15 13:10:55
【问题描述】:
我有 2 个简单的文件:
file1.php
<?php
namespace NM\data;
class MyClass
{
static function myStaticFunction(){
echo __NAMESPACE__." heheh";
}
}
function myfunction()
{
echo __FUNCTION__." some data";
}
const MYCONST = 1;
和file2.php:
<?php
// include 'file1.php';
use NM\data as NM;
class MyClass
{
}
function myfunction()
{
echo __NAMESPACE__." heheh";
}
const MYCONST = 2;
echo NM\myfunction();
文档说您可以使用 use 作为命名空间的导入命令。 http://php.net/manual/en/language.namespaces.importing.php
我只用use 导入命名空间收效甚微。对于要使用的其他命名空间,我必须使用include。但如果我使用include,则use 只是一个别名。
是否可以仅使用 use 关键字导入命名空间?
【问题讨论】:
-
use和include是非常不同的生物;include包含一个文件,use关联一个命名空间,use不包含任何文件,导入!== 包括...没有包含与使用 -
请看php.net/manual/en/language.namespaces.importing.php#example-258。该示例使用
use My\Full\Classname as Another;,但不包含任何内容。那怎么不是错误呢?它一定是从某个地方导入了一个命名空间。 -
停止混淆导入和包含.....它们完全不是一回事......
use确实不自动包含任何文件,它只是为类提供别名......除了use之外,还可以使用include,或者使用自动加载器来执行包含 -
正如您自己引用的那样,
use仅适用于 命名空间。命名空间实际上只与事物的命名有关。它完全不关心从文件中加载代码。 -
也许我应该重新表述我的困惑。 php.net/manual/en/language.namespaces.importing.php#example-258 使用
use My\Full\Classname as Another;命名空间`My\Full\Classname`从何而来? id 是否在另一个文件中声明(我不需要包含)?
标签: php