我有2个班级
我想在数据库中使用我的语言 所以它输出结果
前:
class db_control{
var $db_connection, $lang_var;
//create the function for the connection
function db_connect(){
//define some variables
global $db_host, $db_username, $db_password, $db_name, $lang_var;
$this->db_connection = mysql_connect("$db_host","$db_username","$db_password")or die("can't connect to server with these informations");
//checl that the connection is established
if($this->db_connection){
echo $lang_vars->getvar("$langvals[lang_con_est]");
}
但是这个
$lang_vars->getvar("$langvals[lang_con_est]");
不起作用 我的意思是它输出许多问题 并且我确定我的问题是我没有正确定义我的变量和类
P.S:语言类位于文件中,名为language.php,此部分位于DB.MySQL.php中
编辑: 这是语言课
class lang_vars{
public static function getvar($variable){
return $variable;
}
}
我希望DB类显示语言类中的文本 这就是为什么我用
echo $lang_vars->getvar("$langvals[lang_con_est]");
但它不起作用 因为我宣布语言课 $ lang_vars = new lang_vars; 在db_control中,它显示错误意外的T_something预期T_Function 当我宣布它没有任何东西 希望我现在能让事情变得更清楚了
答案 0 :(得分:2)
您还在使用PHP4语法的原因是什么?
创建db_control
类的实例时,将要存储为$lan_var
的对象传递给构造函数,或通过专用的setter设置它。请参阅Dependency Injection。
class DBControl
{
protected $_lang;
public function __construct($lang = NULL)
{
if($lang !== NULL) {
$this->_lang = $_lang;
}
}
public function setLang($lang)
{
$this->_lang = $lang;
}
}
然后做任何一次
$dbControl = new DBControl(new LangThing);
或
$dbControl = new DBControl;
$dbControl->setLang(new LangThing);
另外,摆脱全局变量。通过依赖注入传递那些。
答案 1 :(得分:1)
制作语言课程方法static
。 Read more here.
class LangClass
{
public static function getvar()
{
// your code here
}
}
然后,您可以使用其功能而无需创建如下对象:
$LangClass::getvar("$langvals[lang_con_est]");
答案 2 :(得分:1)
这可以解决问题。
$lang_vars = new LanguageClassOrWhateverItIsCalled();
$lang_vars->getvar($langvals[lang_con_est]);
但也许您应该考虑将其作为一种静态方法。在这种情况下,你可以用:
来调用它LanguageClassOrWhateverItIsCalled::getVar($langvals[lang_con_est]);
您可以将方法静态定义为:
public static function getVar() {
// Do something
}
编辑:@SAFAD
您应该使用静态方法。要使其工作,请确保加载了class language.php。为此,只需在DB.MYSQL.php文件中添加以下行:
require_once('language.php');
class db_control {
...
确保您拥有language.php文件的正确路径。
然后你应该像这样调用db_control类中的方法:
if($this->db_connection){
echo lang_vars::getvar("$langvals[lang_con_est]");
}
此外,这样的功能有什么用?你应该这样做:
if($this->db_connection){
echo $langvals[lang_con_est];
}
或将静态getvar方法更改为:
public static function getvar($variable){
return $langvals[$variable];
}
你的函数调用:
if($this->db_connection){
echo lang_vars::getvar("lang_con_est");
}