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

标签 php model-view-controller oop private-members

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

我在 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/

相关文章:

php - 在嵌套循环中运行查询

php - 如何使用 WordPress REST API v2 来搜索帖子?

javascript - PHP、HTML JS MySQL 动态下拉菜单

java - 在我的 Controller 上使用 @Autowired 时出现 NoSuchBeanDefinitionException

typescript - 我应该在构造函数中抛出异常吗

php - 通过文本输入表单 php 将数据发送到 android 设备

c# - 如何使用 .Net 使用 MVC 和 Entity Framework 在表中动态添加数据库字段?

php - 在 magento 管理模块中使用 Controller 和模型提交表单值

oop - 封装通用逻辑(领域驱动设计、最佳实践)

javascript - 面向对象的 Javascript,为什么对象的方法不能在我的 init 方法中工作?