Php 在 class 上访问静态方法
Php access a static method on class
首先我是 OOP 新手。对不起,如果这是一个菜鸟问题。
我正在构建一个多语言网站。我正在使用 languga iso 获取数据库值。例如:index.php?lang=en
如果使用 $_GET 参数设置了语言值,mysql 只会在数据库中带来 en 值。问题出在我的 LanguageController 上。
// 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;
}
}
}
我想为 'en' 等传递默认的 $lang 参数。
如果客户端将语言更改为 'fr',我必须开始会话。 mysql 带来 'fr' 语言值。
我如何在我的 detectLang()
方法上传递我的 $lang
参数。
我试过了var_dump(LanguageController::detectLang())
即将到来 NULL
.
任何帮助都非常适用。
在静态方法中你只能引用静态属性。简单来说,$lang 也需要是静态的,即
public static var $lang = "en";
当函数中没有 return
语句时 - 返回值为 NULL
。显然你的 detectLang
函数有效并且 isset($_GET["lang"])
条件是 true
,在这种情况下返回值是 NULL
.
首先我是 OOP 新手。对不起,如果这是一个菜鸟问题。
我正在构建一个多语言网站。我正在使用 languga iso 获取数据库值。例如:index.php?lang=en
如果使用 $_GET 参数设置了语言值,mysql 只会在数据库中带来 en 值。问题出在我的 LanguageController 上。
// 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;
}
}
}
我想为 'en' 等传递默认的 $lang 参数。
如果客户端将语言更改为 'fr',我必须开始会话。 mysql 带来 'fr' 语言值。
我如何在我的 detectLang()
方法上传递我的 $lang
参数。
我试过了var_dump(LanguageController::detectLang())
即将到来 NULL
.
任何帮助都非常适用。
在静态方法中你只能引用静态属性。简单来说,$lang 也需要是静态的,即
public static var $lang = "en";
当函数中没有 return
语句时 - 返回值为 NULL
。显然你的 detectLang
函数有效并且 isset($_GET["lang"])
条件是 true
,在这种情况下返回值是 NULL
.