Fatal Error: Using $this when not in object context Fatal Error: Using $this when not in object context codeigniter codeigniter

Fatal Error: Using $this when not in object context


You can't use $this in a static method. The variable $this is only available to class methods as these receive the object on which the method is called.

That's what "when not in object context" means: there's no object passed to that static method because it's static. A static method is part of the class, not part of the objects that are instantiated using that class.


$this will not be available in a static function. You'll probably want to re-create $app within the static function:

static function store($key, $value){    $app = base_url('application') . '/cache/';    $key = sha1($key);    $value = serialize($value);    file_put_contents( $app . $key.'.cache', $value);}

I'm not quite sure what you're trying to do in the grand context of your application, but you may not even need a static method in the first place.


To be honest, the store function should be an instance function (remove static keyword), otherwise using $this within it will have no idea what object it's referring to.

Alternatively, you could have objects pass in references to themselves so that the static function would know what object to act on: static function store($obj, $key, $value) [...] $obj->app [...]

Or, just pass in the contents of $obj->app since the static function only needs that piece of information and not access to the entire object:

static function store($app, $key, $value){    $key = sha1($key);    $value = serialize($value);    file_put_contents( $app . $key.'.cache', $value);}