Php 访问类上的静态方法


Php access a static method on class

首先,我是OOP的新手。对不起,如果这是一个菜鸟问题。

我正在建立一个多语言网站。我正在使用语言 iso 获取数据库值。例如:index.php?lang=en如果语言值设置为 $_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;
        }
    }
}

我想为例如"en"传递默认$lang参数。如果客户端将语言更改为"fr",我必须启动会话。mysql 带来了"fr"语言值。如何在detectLang()方法上传递$lang参数。

我试过var_dump(LanguageController::detectLang())它即将NULL

.

任何帮助都非常感谢。

当函数中没有 return 语句时 - 返回值为 NULL 。显然,您的detectLang函数有效并且isset($_GET["lang"])条件为true,在这种情况下,返回值为NULL

在静态方法中,只能引用静态属性。简单来说,$lang也需要是静态的,即

public static var $lang = "en";