gpt4 book ai didi

PHP:从严重死亡的类中调用私有(private)方法

转载 作者:行者123 更新时间:2023-12-02 07:13:11 25 4
gpt4 key购买 nike

所以这听起来可能有点令人费解。祈祷我清楚地看到了。

我在 PHP 的 MVC 框架中工作。

我加载一个调用助手的 Controller /report/index

<? class ReportController extends Controller { 
public function index() {
$foo = MainReport::get_data($_REQUEST);
}

}
?>

在助手内部

<? class MainReport extends foo {
public function get_data($_REQUEST) {
// do stuff
return $stuff_done;
}

}
?>

我运行它就像 ^这一切都很好。不幸的是,我想这样运行它:

<? class MainReport extends foo {
private function do_stuff() {
// do even better stuff here!
return $better_stuff;
}
public function get_data($_REQUEST) {
// do stuff
$x = $this->do_stuff();
}

}
?>

不幸的是......当我尝试从我从其他地方调用的类中调用私有(private)函数时......(哇,那是一口)......一切都死了。死得非常非常糟糕,我什至没有得到一个错误。

对我来说,很明显我遇到了某种令人难以置信的语法问题......但是我如何正确地从类中访问私有(private)函数?

也许是这样的: self::do_stuff();

如何声明和访问私有(private)类变量?

 private $bar = array();

欢迎任何帮助。

最佳答案

您正在从静态上下文中调用您的函数,

MainReport::get_data($_REQUEST)

因此 $this 在该函数内不存在。

如果你想在静态上下文中调用另一个类函数,你也必须静态调用它。

public function get_data($_REQUEST) {
// do stuff
$x = MainReport::do_stuff();
}

或者,您可以在原始调用中创建您的类的实例并使用该实例:

$myMainReport = new MainReport();
$myMainReport->get_data($_REQUEST);

然后你的类代码将按预期工作

关于PHP:从严重死亡的类中调用私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com