首页  >  问答  >  正文

致命错误:无法声明函数 Demo2\test,因为该名称已在使用中

和老师一样的代码,报错:

Fatal error: Cannot declare function Demo2\test because the name is already in use in E:\wwwroot\phpbase\object\namespace\test2.php on line 5

test1代码:

<?php 

namespace Demo1;

function test($a,$b)

{

  return $a*$b;

}

?>

test2代码:

<?php

namespace Demo2;

require('test1.php');

use function Demo1\test;

function test($a,$b)

{

  return $a+$b;

}

echo test(4,5) ;// 非限定命名空间

echo "<hr>";

echo test(4,5);

 ?>


王先生王先生1851 天前1558

全部回复(13)我来回复

  • 王先生

    王先生2019-10-19 09:42:11

    你很好学,大兄弟!

    回复
    0
  • 老老宋

    老老宋2019-10-19 09:36:04

    那就不知道了

    回复
    0
  • 老老宋

    老老宋2019-10-18 18:51:17

    Screenshot_6.png最终结果是 9

    回复
    0
  • 老老宋

    老老宋2019-10-18 18:50:36

    ssss.pngtest2.php 文件

    回复
    0
  • 老老宋

    老老宋2019-10-18 18:49:49

    666666.pngtest1.php 文件

    回复
    0
  • 王先生

    其实把调用的位置调整之下也是可以解决的(哪里调用就放在那个前面,不要把所有引入的都放一起)。也有其他解决方案,我只是好奇一样的操作,一样的代码,老师的可以,我的不行

    王先生 · 2019-10-18 18:53:21
  • 老老宋

    老老宋2019-10-18 18:46:24

    test1.php 和 test2.php 是放在不同的 Demo1 和 Demo2 文件夹中

    回复
    0
  • 王先生

    我是放在两个文件中的

    王先生 · 2019-10-18 18:50:01
  • 老老宋

    老老宋2019-10-18 18:27:59

    use function Demo1\test;  这一行去掉 就可以了

    回复
    0
  • 王先生

    要的就是通过命名空间导入函数,去掉还有啥意义

    王先生 · 2019-10-18 18:30:33
  • 王先生

    王先生2019-10-18 18:12:30

    老师代码就是解决这种重名的,他演示没有错,我们用一样的代码就有错

    回复
    0
  • 老老宋

    老老宋2019-10-18 18:03:47

    test2  本身有一个 test方法  然后你引入的 test1 也有一个 test 方法

    在同一个.php 存在相同方法 会你上边的报错

    http://php.wyscdz.com

    回复
    0
  • 王先生

    王先生2019-10-18 16:59:48

    上面的错误是 php 版本是7.0.12

    如果切换回 5.6.27 就报如下的错:

    Fatal error: Call to undefined function Demo1\test()

    回复
    0
  • 取消回复