我正试图找出有效的方法。
假设我有一个名为fr.php
的语言文件,其中存在一些变量:
$lang["W_TYPE"]["COMPLETE"] = "Completé";
$lang["W_TYPE"]["INCOMPLETE"] = "Incomplet";
$lang["W_TYPE"]["BO"] = "En attente";
现在假设我的一个类中有一个方法需要访问其中一些变量。
public function getCompletion($string = true)
{
$x = $this->COMPLETION;
if($string)
{
echo $lang["W_TYPE"]["COMPLETE"];
if($x==self::ORDER_COMPLETE)
{
return "<font class='jobComplete'>".$lang["W_TYPE"]["COMPLETE"]." ✓</font>";
}
elseif($x==self::INCOMPLETE)
{
return "<font class='jobIncomplete'>".$lang["W_TYPE"]["INCOMPLETE"]."...</font>";
}
elseif($x==self::BACK_ORDER)
{
return "<font class='backOrder'>".$lang["W_TYPE"]["BO"]."...</font>";
}
}
else
{
return $x;
}
}
上述情况当然是不可能的,但我实际上已经没有选择如何以最有效的方式做这样的事情了。有什么想法吗?
答案 0 :(得分:2)
假设你的班级看起来像这样:
<?php
class CompleteClass
{
function __construct($lang)
{
$this->lang = $lang;
}
public function getCompletion($string = true)
{
$lang = $this->lang;
$x = $this->COMPLETION;
if ($string) {
echo $lang["W_TYPE"]["COMPLETE"];
if ($x == self::ORDER_COMPLETE) {
return "<font class='jobComplete'>" . $lang["W_TYPE"]["COMPLETE"] . " ✓</font>";
} elseif ($x == self::INCOMPLETE) {
return "<font class='jobIncomplete'>" . $lang["W_TYPE"]["INCOMPLETE"] . "...</font>";
} elseif ($x == self::BACK_ORDER) {
return "<font class='backOrder'>" . $lang["W_TYPE"]["BO"] . "...</font>";
}
} else {
return $x;
}
}
}
?>
您可以在创建类时从构造函数中获取语言文件。
您还应该有fr.php
,以及所有其他语言文件最后返回数组。这样,它可以被主脚本使用,而不必知道有问题的变量名称。
fr.php
$lang["W_TYPE"]["COMPLETE"] = "Completé";
$lang["W_TYPE"]["INCOMPLETE"] = "Incomplet";
$lang["W_TYPE"]["BO"] = "En attente";
return $lang;
您现在可以在另一个文件中创建类:
<?php
$lang = require_once 'fr.php';
$completeClass = new CompleteClass($lang);
echo $completeClass->getCompletion(true);
?>
答案 1 :(得分:0)
fr.php注意return $lang;
$lang["W_TYPE"]["COMPLETE"] = "Completé";
$lang["W_TYPE"]["INCOMPLETE"] = "Incomplet";
$lang["W_TYPE"]["BO"] = "En attente";
return $lang;
其他文件请注意$lang = require_once 'fr.php';
public function getCompletion($string = true)
{
$lang = require 'fr.php';
$x = $this->COMPLETION;
if($string)
{
echo $lang["W_TYPE"]["COMPLETE"];
if($x==self::ORDER_COMPLETE)
{
return "<font class='jobComplete'>".$lang["W_TYPE"]["COMPLETE"]." ✓</font>";
}
elseif($x==self::INCOMPLETE)
{
return "<font class='jobIncomplete'>".$lang["W_TYPE"]["INCOMPLETE"]."...</font>";
}
elseif($x==self::BACK_ORDER)
{
return "<font class='backOrder'>".$lang["W_TYPE"]["BO"]."...</font>";
}
}
else
{
return $x;
}
}