Using Laravel, I created an app to summarize and chat with YouTube videos. Check it out!
Benjamin Crozat
PHP

Here's the fix to "using $this when not in object context."

Benjamin Crozat
Modified on Dec 14, 2022 0 comments Edit on GitHub
Here's the fix to "using $this when not in object context."

Introduction

To fix “Using $this when not in object context”, you can make the static method that is calling $this non-static.

No matter if you’re using CodeIgniter, CakePHP, Laravel, Symfony, WordPress, Yii, or anything else, $this is a variable that refers to the current object. Therefore, it’s natural to not being allowed to call it from a static method.

How to fix “Using $this when not in object context”, by example

Take this code and try to run it. You will see “Using $this when not in object context” again.

class Foo {
    public static function bar() {
        // This is bad because we are in a static method.
        $this->baz();
    }
    
    public function baz() {
    }
}

Foo::bar();

As you can see, we are trying to call baz(), which is a non-static method, from a static method.

As mentionned above, we need to:

  1. Remove the static keyword from bar()’s declaration;
  2. Create an instance of Foo and call bar() from there.
class Foo {
    public function bar() {
        $this->baz();
    }
    
    public function baz() {
    }
}

$foo = new Foo;
$foo->bar();

You could also make the baz method static depending on your initial intention:

class Foo {
    public static function bar() {
        static::baz();
    }
    
    public static function baz() {
    }
}

Wait, there's more!

Be the first to comment!

Get help or share something of value with other readers!

Great deals for enterprise developers
  • ZoneWatcher
    Get instant alerts on DNS changes across all major providers, before your customers notice.
    25% off for 12 months using the promo code CROZAT.
    Try ZoneWatcher for free
  • Quickly build highly customizable admin panels for Laravel projects.
    20% off on the pro version using the promo code CROZAT.
    Try Backpack for free
  • Summarize and talk to YouTube videos. Bypass ads, sponsors, chit-chat, and get to the point.
    Try Nobinge →
  • Monitor the health of your apps: downtimes, certificates, broken links, and more.
    20% off the first 3 months using the promo code CROZAT.
    Try Oh Dear for free
  • Keep the customers coming; monitor your Google rankings.
    30% off your first month using the promo code WELCOME30
    Try Wincher for free →
The latest community links
- / -