PHP 使用 NameSpace 调用未定义的函数



我开始使用"命名空间"进行编码。

核心.php:

namespace Language;
    class LanguageCore {
        private $langCode = "pl";
        private $language;
        public function __construct(){
            if(file_exists("lang/".substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2).".php"))
                $this->langCode = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
            require_once "lang/".$this->langCode.".php";
            $this->language = new language();
        }
        public function gt($index = null)
        {
            return "its work";
        }
    }

一个工作得很好

索引.php:

  require_once 'core.php';
  use LanguageLanguageCore as Lang;
  $lang = new Lang();
  echo $lang->gt(); // return "its work"

但是当我尝试添加"使用功能"时,我遇到了致命错误

  require_once 'core.php';
  use LanguageLanguageCore as Lang;
  use function LanguageLanguageCoregt as _;
  $lang = new Lang();
  echo _(); // return error

错误信息:

Fatal error:  Uncaught Error: Call to undefined function LanguageLanguageCoregt()

我做错了什么?

问候!

编辑:我需要在类中使用这个函数,因为我在这个函数中使用了一个类变量。

如果要从 LanguageCore 类访问 gt 方法,则需要以这种方式调用它:

require_once 'core.php';
use LanguageLanguageCore as Lang;
$lang = new Lang();
echo $lang->gt();

这是因为 gt 是 LanguageCore 类的一种方法。因此,在启动此类时,您需要对存储在 $lang 变量中的对象调用该方法。

如果要使用use function语法。您必须将方法移出类,如以下示例所示:

namespace Language {
function gt($index = null)
{
    return "its work";
}
class LanguageCore {
    private $langCode = "pl";
    private $language;
    public function __construct()
    {
        ...
    }
    public function gt($index = null)
    {
        return "its work";
    }
}
}

最新更新