Php доступ к статическому методу на классе

0

Во-первых, я новичок в ООП. Извините, если это вопрос 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.

Любая помощь очень удобна.

Теги:
oop
parameter-passing
multilingual

2 ответа

1
Лучший ответ

Если в функции нет оператора return возвращаемое значение равно NULL. Очевидно, что ваша функция detectLang работает, и detectLang isset($_GET["lang"]) true, в этом случае возвращаемое значение равно NULL.

  • 0
    Огромное спасибо. я добавил return $lang значение return $lang и он возвращает string 'en' (length=2)
-2

В статических методах вы можете ссылаться только на статические атрибуты. Простыми словами, $ lang также должен быть статическим, т.е.

public static var $lang = "en";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню