PHP名称空间,使用命令
我正在学习PHP名称空间,我有一个非常简单的代码,但它不起作用,我想知道为什么: 我们有PHP名称空间,使用命令,php,namespaces,Php,Namespaces,我正在学习PHP名称空间,我有一个非常简单的代码,但它不起作用,我想知道为什么: 我们有n1.php包含一个名称空间和一个函数: <?php namespace app\cat1; function echoo(){ echo "from cat 1"; } ?> <?php require_once('n1.php'); require_once('n2.php'); use app\cat1; echoo(); ?> 现在在index.php中,我包
n1.php
包含一个名称空间和一个函数:
<?php
namespace app\cat1;
function echoo(){
echo "from cat 1";
}
?>
<?php
require_once('n1.php');
require_once('n2.php');
use app\cat1;
echoo();
?>
现在在index.php
中,我包括了n1.php和n2.php,以使用echoo
函数:
<?php
namespace app\cat1;
function echoo(){
echo "from cat 1";
}
?>
<?php
require_once('n1.php');
require_once('n2.php');
use app\cat1;
echoo();
?>
当然,我能做到这一点,它会起作用的:
<?php
require_once('n1.php');
require_once('n2.php');
//use app\cat1; <-- this is commented
app\cat1\echoo(); // <-- and now I'm using full path to run the echoo()
?>
默认情况下使用
关键字将导入命名空间下的对象,您需要定义您正在使用的是函数
您需要将函数名传递给use
以解决问题的另一件事:
use function app\cat1\echoo;
委员会:
因此,在您的示例中-这里我使用分组名称空间,而不是包含文件,只要大多数在线IDE不支持包含-:
实例:我们如何分离名称空间文件并将其放入多个文件中,而不使用include方法?有办法吗?我在Laravel框架文件中看到这种情况,它只使用use
,没有include
,我用底部的新问题更新了我的问题。
// importing a function (PHP 5.6+)
use function My\Full\functionName;
namespace app\cat1 {
function echoo(){
echo "from cat 1";
}
}
namespace app\cat2 {
function echoo(){
echo "from cat 2";
}
}
namespace {
use function app\cat2\echoo;
// ^^^^^^^^ see this
echoo();
// Output : from cat 2
}