搜尋

首頁  >  問答  >  主體

致命錯誤:無法宣告函數 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);

 ?>


##

王先生王先生1893 天前1593

全部回覆(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
  • 取消回覆