Php访问类上的静态方法
首先,我是OOP新手。对不起,如果这是一个noob问题 我正在建立一个多语言网站。我正在用languga iso获取数据库值。例如:Php访问类上的静态方法,php,oop,parameter-passing,multilingual,Php,Oop,Parameter Passing,Multilingual,首先,我是OOP新手。对不起,如果这是一个noob问题 我正在建立一个多语言网站。我正在用languga iso获取数据库值。例如:index.php?lang=en如果语言值是用$\u GET参数设置的,mysql在数据库中只带en值。问题在于我的语言控制器 // LanguageController Class class LanguageController { public $lang = "en"; public function __construct() {
index.php?lang=en
如果语言值是用$\u GET参数设置的,mysql在数据库中只带en值。问题在于我的语言控制器
// LanguageController Class
class LanguageController {
public $lang = "en";
public function __construct() {
return true;
}
public static function detectLang() {
$lang = 'en';
ob_start();
session_start();
if(isset($_GET["lang"])) {
$lang= $_GET["lang"];
$_SESSION["lang"] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else {
$lang = 'en';
$_SESSION["lang"] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
return true;
}
}
}
我想为eg'en'传递默认的$lang参数。
如果客户端将语言更改为“fr”,我必须启动会话。mysql带来了“fr”语言值。
如何在detectLang()
方法上传递$lang
参数
我尝试了var\u dump(LanguageController::detectLang())
它来了NULL
非常感谢任何帮助。在静态方法中,您只能引用静态属性。简单地说,$lang也需要是静态的,即
public static var $lang = "en";
当函数中没有
return
语句时-返回值为NULL
。显然,您的detectLang
函数工作正常,isset($\u GET[“lang”])
条件为true
,在这种情况下,返回值为NULL
非常感谢。我添加了return$lang
value,它返回string'en'(长度=2)