[英]how to call the function of the same class inside another function of that class in php
[英]call another class's function inside a class
我有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]");
不起作用,我的意思是它输出许多问题,并且确定我的问题是我没有正确定义变量和类
PS:语言类在名为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,当我在外部没有声明它时,希望现在使事情变得更清楚
为什么仍使用PHP4语法?
创建db_control
类的实例时,将要存储为$lan_var
的对象传递到构造函数中,或通过专用的setter进行设置。 请参阅依赖注入 。
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);
另外,摆脱全局变量。 也通过依赖注入传递那些。
使您的语言类方法static
。 在这里阅读更多。
class LangClass
{
public static function getvar()
{
// your code here
}
}
然后,您可以使用其功能而无需创建如下对象:
$LangClass::getvar("$langvals[lang_con_est]");
这可以解决问题。
$lang_vars = new LanguageClassOrWhateverItIsCalled();
$lang_vars->getvar($langvals[lang_con_est]);
但是也许您应该考虑使其成为静态方法。 在这种情况下,您可以通过以下方式调用它:
LanguageClassOrWhateverItIsCalled::getVar($langvals[lang_con_est]);
您可以像下面这样定义static方法:
public static function getVar() {
// Do something
}
编辑:@SAFAD
您应该为此使用静态方法。 要使此工作正常,请确保已加载您的类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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.