1、主要作用是为了引用命名空间2、主要目的是为了防干扰。 <?php namespace App { // 当前在 App 命令空间下定义了一个 array_map 方法, function array_map(string $func, array $array) { var_dump(__FUNCTION__ ,$func,implode(',',$array)); } // 现在我们使用 array_map 就会默认使用当前命名空间下的 array_map('自定义的', [1]); // 在 App 命名空间内,如果想要使用系统的 array_map ,有两种办法 // A.使用 \ 表示使用根命名空间下的方法 \array_map(function($i){ echo $i.PHP_EOL; },[123]); // B.使用 use function array_map ,但是光这样是不行的, // 还需要给他一个别名,因为在当前命名空间下已经有一个名字 // 叫 array_map 的方法了,直接 use 会导致命名空间冲突 use function \array_map as o_array_map; o_array_map(function($i){ echo $i.PHP_EOL; },[123]); } // 以下同理 namespace Run { // 先引入了自带的 array_map use function \array_map; // 调用正常, array_map(function ($i) { echo $i . PHP_EOL; }, [1, 2, 3]); // 这里又引入了上面 \App\array_map ,同样,因为上面的引入已经占用了, // 所以这里必须给一个别名,避免冲突 use function \App\array_map as AppArrayMap; AppArrayMap('自定义的', [4, 5, 6]); // 或者使用完整命名空间,这里 App 前面为啥要加 \ 号呢,你可以理解为 // 在文件系统中,相对路径和绝对路径的关系,如果前面没有 \ 就会变成 \Run\App\array_map 了。 \App\array_map('自定义的2',[4,5,6]); } // 即,谁先 use 进来,就表示了当前命名空间下,先用谁的, // 后面要用就必须要限定他的完整命名空间,或者给他一个别名 // 当然,如果当前命名空间下不存在这个方法,默认会去调用系统的 // 如果系统也没有这个方法,就会抛出方法不存在的错误 //
1、主要作用是为了引用命名空间
2、主要目的是为了防干扰。