Во-первых, я новичок в ООП. Извините, если это вопрос noob.
Я создаю многоязычный веб-сайт. Я извлекаю значения базы данных с помощью 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;
}
}
}
Я хочу передать параметр $ lang по умолчанию, например, 'en'. Если клиент меняет язык на "fr", я должен начать сеанс. И mysql приносит языковые значения fr. Как я могу передать параметр $lang
в свой detectLang()
.
Я попробовал var_dump(LanguageController::detectLang())
Он пришел NULL
.
Любая помощь очень удобна.
Если в функции нет оператора return
возвращаемое значение равно NULL
. Очевидно, что ваша функция detectLang
работает, и detectLang
isset($_GET["lang"])
true
, в этом случае возвращаемое значение равно NULL
.
В статических методах вы можете ссылаться только на статические атрибуты. Простыми словами, $ lang также должен быть статическим, т.е.
public static var $lang = "en";
return $lang
значениеreturn $lang
и он возвращаетstring 'en' (length=2)