PHP вызов неопределенной функции с NameSpace - PullRequest
0 голосов
/ 07 января 2019

Я начинаю кодирование с использования «namespace».

core.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";
        }
    }

и одна работа очень хорошо

Index.php:

  require_once 'core.php';
  use Language\LanguageCore as Lang;

  $lang = new Lang();
  echo $lang->gt(); // return "its work"

но когда я попытался добавить "функцию использования", у меня произошла фатальная ошибка

  require_once 'core.php';
  use Language\LanguageCore as Lang;
  use function Language\LanguageCore\gt as _;

  $lang = new Lang();
  echo _(); // return error

сообщение об ошибке:

Fatal error:  Uncaught Error: Call to undefined function Language\LanguageCore\gt()

Что я делаю не так?

привет! * * 1023

EDIT: Мне нужна эта функция в классе, потому что я использую переменную класса в этой функции.

1 Ответ

0 голосов
/ 07 января 2019

Если вы хотите получить доступ к методу gt из вашего класса LanguageCore, вам нужно будет вызвать его следующим образом:

require_once 'core.php';
use Language\LanguageCore 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";
    }
}
}
...