[英]Php access a static method on class
First all i'm new on OOP. 首先,我是OOP的新手。 Sorry if this is a noob question.
抱歉,这是一个菜鸟问题。
I'm building a multilanguage web site. 我正在建立一个多语言的网站。 I'm fetching database values with languga iso's.
我正在使用languga iso的数据库值。 For eg:
index.php?lang=en
if language value is set with $_GET parameter, mysql brings only en values in database. 例如:
index.php?lang=en
如果语言值是使用$ _GET参数设置的,则mysql仅将en值带入数据库。 The problem is with my LanguageController. 问题出在我的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;
}
}
}
I want to pass default $lang parameter for eg 'en'. 我想传递默认的$ lang参数,例如'en'。 If client change language to 'fr', i must start a session.
如果客户将语言更改为“ fr”,我必须开始一个会话。 And mysql brings 'fr' language values.
mysql带来了“ fr”语言值。 How can i pass my
$lang
parameter on my detectLang()
method. 我如何在我的
detectLang()
方法上传递$lang
参数。
I tried var_dump(LanguageController::detectLang())
It's coming NULL
. 我尝试了
var_dump(LanguageController::detectLang())
它即将var_dump(LanguageController::detectLang())
NULL
。
Any help greatly appricated. 任何帮助极大地申请。
When there's no return
statement in a function - returned value is NULL
. 当函数中没有
return
语句时,返回值为NULL
。 Obviously your detectLang
function works and the isset($_GET["lang"])
condition is true
, in this case the returned value is NULL
. 显然,您的
detectLang
函数起作用并且isset($_GET["lang"])
条件为true
,在这种情况下,返回值为NULL
。
In static methods you can only reference to static attributes. 在静态方法中,您只能引用静态属性。 In simple words, the $lang needs to be static as well ie
简单来说,$ lang也必须是静态的,即
public static var $lang = "en";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.