当前位置: 首页 > 面试题库 >

PHP致命错误:不在对象上下文中时使用$ this

翟青青
2023-03-14
问题内容

我有一个问题:

我正在编写没有框架的新WebApp。

在我的 index.php中, 我正在使用:require_once('load.php');

load.php中,require_once('class.php');用来加载 class.php

在我的 class.php中, 出现此错误:

致命错误:不在类的类上下文中,在行上使用$ this …(在本示例中为11)

我的 class.php 的编写示例:

class foobar {

    public $foo;

    public function __construct() {
        global $foo;

        $this->foo = $foo;
    }

    public function foobarfunc() {
        return $this->foo();
    }

    public function foo() {
        return $this->foo;
    }
}

在我的 index.php中, 我正在加载的可能foobarfunc()是这样的:

foobar::foobarfunc();

但也可以是

$foobar = new foobar;
$foobar->foobarfunc();

为什么会出现错误?


问题答案:

在我的index.php中,我正在像这样加载foobarfunc():

 foobar::foobarfunc();  // Wrong, it is not static method

但也可以是

$foobar = new foobar;  // correct
$foobar->foobarfunc();

您不能以这种方式调用方法,因为它不是静态方法。

foobar::foobarfunc();

您应该改用:

foobar->foobarfunc();

但是,如果您创建了一个静态方法,则类似于:

static $foo; // your top variable set as static

public static function foo() {
    return self::$foo;
}

那么您可以使用以下代码:

foobar::foobarfunc();


 类似资料:
  • 问题内容: 这是有错误的部分。 致命错误:第6行/pb_events.php中不在对象上下文中时使用$ this 第6行是: 非常感谢!欣赏! 问题答案: $这仅在方法中有意义,在函数中没有意义 还行吧 这不是 //编辑:没有注意到他将“ $ this”作为参数传递 建议:只需将“ $ this”替换为“ $ somethingElse”

  • 问题内容: 我正在尝试执行一些查询以获取有关某些图像的信息页面。我写了一个函数 根据这些图片的受欢迎程度选择页面。我已经编写了一个处理与数据库交互的类,并保存了有关图像的信息。当我尝试运行此程序时,出现错误。 是mysqli结果集,所以我对为什么它不起作用感到困惑。 问题答案: 那是因为您的查询中有错误。 错误时将返回false。将其更改为: 如果有错误,那应该抛出异常…

  • 我正在尝试通过Tumblr PHP API验证用户身份。 我收到此错误 致命错误:未捕获异常“GuzzleHttp\exception\RequestException”,消息为“cURL error 60:SSL证书问题:无法获取本地颁发者证书(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html)' 当访问建议的站点时,这是错误60的解释 C

  • 我有一个网站,在我的本地主机与xampp完美地工作,但。。。我把它上传到了一些免费的网站(000webhost和hostinger),当我试图打开它时,收到了以下消息: 警告:require(core/libs/smarty/smarty.class.php):无法打开流:在/home/u327900732/public_html/www/index中没有这样的文件或目录。php在线7 致命错误:

  • 问题内容: 根据对此答案的评论,有可能通过关机功能来捕获致命错误,而使用不能捕获该错误。 但是,我无法确定如何确定是由于致命错误还是由于脚本到达末尾而导致关机。 另外,调试回溯函数似乎在关闭函数中已失效,因此对于记录发生致命错误的堆栈跟踪而言,它毫无价值。 所以我的问题是:对致命错误(尤其是未定义的函数调用)做出反应的同时保持创建适当回溯能力的最佳方法是什么? 问题答案: 这对我有用: 但是,您可

  • 我使用Laravel,我试图迁移一些表到我的数据库(phpmyadmin)。它之前给我带来了一些麻烦,所以我删除了数据库中迁移表中的所有行,所以现在它什么都没有了。所以我试图运行'php工匠迁移',我得到以下错误: PHP致命错误:在第301行的 /var/www/loja/vendor/laravel/framework/src/Illuminate/Database/Migrations/Mi