Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php访问类上的静态方法_Php_Oop_Parameter Passing_Multilingual - Fatal编程技术网

Php访问类上的静态方法

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() {

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

我正在建立一个多语言网站。我正在用languga iso获取数据库值。例如:
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)