Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP名称空间,使用命令_Php_Namespaces - Fatal编程技术网

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中,我包

我正在学习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
}