我正在尝试在班上使用2种方法。
类结构看起来与此类似
class Test extends Something
{
private $dir;
public function __construct()
{
parent::__construct();
}
private function check_theme()
{
// do some checking here
$this->dir = // outcome of the checking
}
public function load_theme()
{
$this->check_theme();
}
public function load_file()
{
$this->dir . $path . $to . $file
}
}
好的,现在,这只有在我运行类似
的情况下才有效$test = new Test();
$test->load_theme();
$test->load_file();
但是现在我有一个我想直接访问的方法,但我真的希望该方法已经知道$dir
的价值是什么。
所以如果我使用$test->load_file();
它会加载文件,因为$dir
的价值已由$test->check_theme();
设置
答案 0 :(得分:1)
我希望我能正确地回答你的问题。我建议在设置$dir
的值时保留一个标志。
在使用$dir
值之前,我们会进行测试以确保其值已设置。如果不是,我们会拨打$load_theme()
,只会按照您在问题中显示的顺序调用check_theme()
。
class Test extends Something
{
private $dir;
private $file_loaded;
public function __construct()
{
parent::__construct();
$this->file_loaded = false;
}
private function check_theme()
{
// do some checking here
$this->dir = // outcome of the checking
}
public function load_theme()
{
$this->check_theme();
$this->file_loaded = true;
}
public function load_file()
{
if (!$this->file_loaded)
$this->load_theme();
$this->dir . $path . $to . $file
}
}