我开始使用“命名空间”进行编码。
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()
我在做什么错了?
致谢!
编辑: 我需要在一个类中使用此函数,因为我在此函数中使用了一个类变量。
答案 0 :(得分:1)
如果要从LanguageCore类访问gt方法,则需要以这种方式调用它:
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";
}
}
}