在我的项目中,我在php中定义了一个Datasource类。
我想用类调用函数,所以我在Datasource类中定义了静态getRedis函数。
这是Datasource.php代码:
<?php
namespace common;
class Datasource {
public $config_name;
public $server_region;
public function __construct() {}
public static function getRedis($config_name = NULL, $server_region = 'default') {
$this->config_name=$config_name;
$this->server_region=$server_region
return $this->config_name;
}
}
现在我想调用getRedis函数并在我的html页面中显示instance1;
这是html代码:
<?php
include "o1ws1v/class/common/Datasource.php";
$redis_obj = common\Datasource::getRedis('instance1');
echo $redis_obj;
?>
但它的话失败了。我不能得到$ redis_obj。它没有显示任何内容。
谁能帮帮我?
答案 0 :(得分:1)
问题是你在静态方法中使用$ this这个上下文。如果你将类变量设为静态,它将起作用。
更多信息Static keyword
您的代码:
<?php
namespace common;
class Datasource {
public static $config_name;
public static $server_region;
public static function getRedis($config_name = NULL, $server_region = 'default') {
self::$config_name=$config_name;
return self::$config_name;
}
}
答案 1 :(得分:0)
如果您只是尝试从类中调用函数,则不必是静态的。让你在公共类中运行,它不需要在构造函数中。
这是你班上的。
public function getRedis($config_name = NULL, $server_region = 'default') {
$this->config_name=$config_name;
$this->server_region=$server_region;
return $this->config_name;
}
在您要调用的文件中。
$variable = new Datasource;
$variable->getRedis(); //This will call your function