鍍金池/ 問答/PHP/ PHP 的 use function 提示方法不能存在。

PHP 的 use function 提示方法不能存在。

PHP 的 use function 提示方法不能存在

controller.php

namespace App\Http\Controllers;

use function App\Http\Controllers\helper;

class WelcomeController
{
    public function test() {
        helper();
    }
}

function.php

namespace App\Http\Controllers;

function helper()
{
    return 1;
}

報錯
Call to undefined function AppHttpControllershelper()

回答
編輯回答
怪痞

require或者include這個文件了么?

2017年10月26日 13:00
編輯回答
幼梔

我們先來說錯誤.你的錯誤有以下幾點.

* 路徑不合法.不符合psr4的規(guī)范.

首先說路徑不合法.psr4的規(guī)范我就不說了,來說實際.你引入use function App\Http\Controllers\helper時,會自動在已加載的方法中去找有這個命名的沒有,如果沒有就自動報錯了.
如果不懂這個,請去查看psr4自動加載規(guī)范.

---- WelcomeController.php ----
namespace App\Http\Controllers;

use function App\Http\helper;

class WelcomeController
{
    public function test() {
        var_dump(helper());
        var_dump(backend());
    }
}

app->Http->function.php

namespace App\Http;
function helper(){
    return '1';
}
// 這樣或許會更容易理解點
namespace App\Http{
    function helper(){
        return '1';
    }
}

composer.json文件

"autoload":{
    "psr-4":{
        "App\\":"app/",
        "App\\Http\\":"app/Http/",
        "App\\Http\\Controllers\\":"app/Http/Controllers"
    },
    "files":[
        "app/Http/function.php"
    ]
}

目錄結構

├── app
│?? └── Http
│??     ├── Controllers
│??     │?? └── WelcomeController.php
│??     └── function.php
├── composer.json
├── index.php
2017年12月26日 01:35