如何包含包含$this并给出“PHP 致命错误:未捕获错误:不在对象上下文中使用$this”的 PHP 文件

How to include a PHP file which contains $this and gives "PHP Fatal error: Uncaught Error: Using $this when not in object context"

提问人:WordPressGeek 提问时间:11/27/2021 最后编辑:WordPressGeek 更新时间:11/28/2021 访问量:148

问:

我想在我的 php 文件中包含一个带有路径的文件,但我遇到的问题是/home/public_html/dir5/file5.php/home/public_html/dir1/file1.php

PHP 致命错误:未捕获错误:在 /home/public_html/dir5/file5.php:2:2 的对象上下文中不使用$this

file5.php 的内容如下:

<?php
 if ( !$this->is_users_rating_disabled() ):
    $score = isset( $this->users_data['overall'] ) ? $this->users_data['overall'] : 0;
    $count = isset( $this->users_data['count'] ) ? $this->users_data['count'] : 0;
    $theme = $this->template_field('template_theme', true);
    $maximum_score = $this->template_field('template_maximum_score', true);
     $revOver = $score;
?>

我读过其他帖子,可能是因为它在错误日志中说,我怎样才能转换我的代码来工作?$this

我看到了一些你可以转换的例子:

$this->$db->etc

自:

$db = get_instance();
$db->etc

类似的东西,但就我而言,我有,例如,我该如何改变它?谢谢!$this->users_data['overall']$this->template_field('template_maximum_score', true);

更新:is_users_rating_disabled() 定义如下:

public function is_users_rating_disabled()
{

    $auth = $this->preferences_field('preferences_authorization', true);

    if ($auth == 'disabled' || $this->review_field('review_disable_user_rating', true) == 'yes') {
        return true;
    }

    return false;
}

最后我只想使用 file5 中的$revOver变量.php在 file1 中.php ,我尝试使用 GLOBALS['revover'] = $revOver;在 file5.php 中设置并在 file1.php 中使用它但它不起作用,除了在 file1.php 中包含 file5.php 之外,还有什么办法可以使用该变量?

php 这个 this-pointer

评论

0赞 user3783243 11/27/2021
如何定义?is_users_rating_disabled()
0赞 WordPressGeek 11/27/2021
is_users_rating_disabled() 定义如下: 公共函数 is_users_rating_disabled() { $auth = $this->preferences_field('preferences_authorization', true); if ($auth == 'disabled' || $this->review_field('review_disable_user_rating', true) == 'yes') { return true; } return false; }
1赞 Chris Haas 11/27/2021
public意味着该函数实际上是一个类方法。这是一个语义上的差异,但重要的是要注意。类是一种隔离和保护代码的方法。Inside a 类用于访问受保护的部分,但只有类作者才能使用它。除非能看到更大的图景,否则重写代码以不使用是没有意义的。$this$this
0赞 WordPressGeek 11/28/2021
最后我只想使用 file5 中的$revOver变量.php在 file1 中.php ,我尝试使用 GLOBALS['revover'] = $revOver;在 file5.php 中设置并在 file1.php 中使用它但它不起作用,除了在 file1.php 中包含 file5.php 之外,还有什么办法可以使用该变量?
0赞 WordPressGeek 12/6/2021
没人知道该怎么做?

答: 暂无答案